主从
①主master-从slave,一主多从,读写分离,容灾快速恢复;
②info replicaiion查看当前角色
③主从配置:先创建公共配置文件,然后配置n个redis配罝,再引入公共配置,配置主从只需要从机执行:slaveof ip port:成为某个redis的从机
④从服务挂了,重启后还是主机,不会自动恢复;主机挂掉从机会计录主机状态
⑤同步原理:从连接主,主持久化后发送rdb文件,从读取(全量复制);主进行写操作会和从同步(增量复制)
⑥从机可以做为令一个redis的主机
⑦slaveof no one命令可以让一个从机在主机挂了升为主机
⑧哨兵模式:监控主机是否故障,根据投票自动将从机升为主机;规则:1优先级靠前的(config里的replica-priority,小的高),2偏移量大的(同步率最高),3runid最小的(redis启动时会生成)。
→新建sentinel.conf文件
→配置sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。
→启动哨兵redis-sentinel /sentinel.conf 默认端口26379
redis做压测可以用自带的redis-benchmark工具
→主机挂掉后会做为新主机的从机
⑨主从会有复制延时的缺点
⑩Java程序
Set<String> sentinelSet=new HashSet<>();
sentinelSet.add("192.168.11.103:26379");
jedisSentinelPool=new JedisSentinelPool("mymaster",sentinelSet,jedisPoolConfig);
return jedisSentinelPool.getResource();
集群
①主从模式时,主机宕机会导致IP变动,应用程序还要修改对应的主机配置,通过以下两种解决
②代理主机:用一个代理主机做集群入口,负责分发请求到不同的模块主机上;但是这样每个主机都需要一个从机,太麻烦
③无中心化集群(Redis3.0):每个主机都是入口,并且可以互相转发
④水平扩容,分区提供可用性
⑤配置集群过程略
⑥集群最少要有3个主节点,并且主节点会尺量分配在不同的lp地址,主从不在同一个IP
⑦集群包含16384个插槽,使用CRC16(key)%16384来计算键属于那个槽,集群中每个主节点负责处理一部分插槽(互相转发原理,key是那个主机的插槽就丢到那个主机执行)
⑧主机只能看自已插槽中的值
⑨故障恢复:从升主;如果某段主从全挂掉,根据cluster-require-full-coverage配置,yes整个集群都挂掉,no该插槽不能读写
⑩Java开发:JedisCIuster