Redis实战

1、持久化

持久化分为RDB持久化和AOF,前者是生成快照,如果数据改动大时该持久化效率高;后者记录命令,数据量大但改动小时,该持久化效率高得多。

RDB默认是开启的,AOF要开启需改配置文件的appendonly为yes。

a、RDB的相关配置:

save 900 1

save 150 10

save 60 10000

代表多久达到多少改变,则触发RDB生成。

b、AOF的相关配置:

# appendfsync always

appendfsync everysec

# appendfsync no

表示什么时候把AOF从缓存写入到文件里(没写入文件的话,服务关掉就没了)

2、主从复制

设置主服务器的地址和密码:

slaveof

masterauth

3、cluster集群

首先要开启:cluster-enabled yes

然后:网上介绍的都是用ruby脚本redis-trib.rb来分配和管理集群(这个实战时发现在centOS下有ruby版本问题,然后使用rvm又各种问题,暂时没弄出来)

不使用redis-trib.rb,可以用命令加手动改nodes.conf来实现。首先cluster的相关命令有:

cluster info:看集群是否启动,有几个节点,已分配槽的数量(总共16384个槽,编号:0-16383)

cluster nodes:看集群各节点分别分配了哪些槽(与文件nodes.conf是一致的,手动改是因为命令不支持批量设置槽给节点 ,每个节点的connected后面是槽的信息,比如:0-7000 7551 8620)

cluster meet [ip] [port]:把当前节点加入某个节点所在的集群

cluster addslots [slot ...]: 增加槽

cluster delslots [slot ...] :删除槽

cluster flushslots:删除所有槽

cluster keyslot  :计算键 key 应该被放置在哪个槽上

cluster replicate :把当前节点设置成另一个节点的从节点(需要先用cluster meet使自身成为集群的一个节点,然后用cluster nodes查看节点id)

Java使用Redis集群,只需加上如下配置:

spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6381

spring.redis.cluster.maxRedirects=3

4、订阅与发布

订阅有两种,订阅频道与订阅模式:

subscribe [channel]:如 subscribe xx

subscribe [pattern]:如 subscribe x*

发布:

publish [channel] [message]:如 publish xx hello  (以上两个订阅都会收到)

Java使用订阅发布:

发布频道index消息:

redisTem.convertAndSend("index", msg); //redisTem类型为RedisTemplate

订阅频道index消息:

Redis实战_第1张图片
把业务实现与订阅进行绑定
Redis实战_第2张图片
业务实现

你可能感兴趣的