redis入门详解-第二篇(面试细节)

本文详细介绍了在IDEA中使用Redis的方法,包括图形化界面操作、代码连接、数据读写、发布订阅、事务处理及持久化策略。通过具体示例展示了如何在Java项目中高效利用Redis,以及Redis在集群环境下的分区实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IDEA使用redis

图形化界面:Java使用redis。你只需要导入jedis的jar包,启动redis数据库就可以使用代码连接redis了。

Jedis jedis=new Jedis("127.0.0.1",6379);
jedis.set("java","hello redis");
System.out.println(jedis.mget("java"));//mget函数可以取多个key
Jedis jedis=new Jedis("127.0.0.1",6379);
Map<String,String> map=new HashMap<>();
map.put("hello","redis");
map.put("world","redisworld");
jedis.hmset("coder",map);
System.out.println(jedis.hget("coder","hello"));

redis 发布订阅

redis也可以实现简单发布订阅的问题
首先可以在多台客户端使用subscribe + channel,在一台上publish +channel+message。下面用Java实现一下。

第一个项目

Main.java

Jedis jedis=new Jedis("127.0.0.1",6379);
jedis.subscribe(new RedisSubscribe(),"channelname");

//你需要在RedisSubscribe类中重新拓展JedisPubSub类

RedisSubscribe.java

public class RedisSubscribe extends JedisPubSub{
   @Override
   public void onMessage(String channel,String message){
   System.out.println(channel+"   "+message);
   }
}
......//还有几个方法要重写,因为没用到就不写了
另建一个项目
Jedis jedis=new Jedis("127.0.0.1",6379);
jedis.publish("channelname","hello");

redis事务

这里就简单讲一下使用,通过multi启动一个事务,然后下面的语句命令都会被放入到一个队列中,如果语句没有语法错误,最后以exec结束依次执行事务中的语句,但是会出现一个问题,如果事务中的语句语法没错但是是与之前有错误冲突比如类型不同但是用了同一个keyName,事务之前的语句不会回滚,所有redis的事务比较鸡肋。

multi
set string string
get string
exec
multi
get a aa
sef a aa
multi
set c ccc
sadd c ccc
exec

redis持久化

redis可以在redis-windows.conf文件中设置持久化策略,我讲一下基本的策略。

快照:

redis默认配置,save 900 1 save 300 10 save 60 10000一刀切全部保存的磁盘一般不用

append only file

使用appenfsync everysecond 每个操作要求持久化,严禁使用

redis是一个内存数据库,内存有大小

maxmemory----设置最大值

使用LRU最近使用算法,很长时间不用的进行淘汰,删除

maxmemory-policy noeviction------虽然有长时间不用但redis认为可能有用不会删

maxmemory-policy volatile-lru 按照lru算法删除

Cluster分区实现原理

槽概念(slot) Cluster有一个16384长度的槽的概念,他们的编号从0、1、。。。。16383。只有master节点才能拥有槽的使用权,如果只是master的slave,他只负责槽的使用,具体哪个master控制哪个槽通过master的为序列结构解决。
位序列结构:一个master节点护一个16384/8字节的位序列。
槽实现也是体现了一致性哈希,如果有一个区宕机,不会影响他的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值