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 <masterip> <masterport>
masterauth <master-password>
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> [slot ...]: 增加槽
cluster delslots [slot ...] :删除槽
cluster flushslots:删除所有槽
cluster keyslot :计算键 key 应该被放置在哪个槽上
cluster replicate <node_id>:把当前节点设置成另一个节点的从节点(需要先用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<String, String>
订阅频道index消息: