ToB企服应用市场:ToB评测及商务社交产业平台

标题: Redis学习笔记十(集群) [打印本页]

作者: 用户云卷云舒    时间: 2022-8-11 15:06
标题: Redis学习笔记十(集群)
集群

解决问题

集群特点

配置集群

  1. 开启daemonize yes
  2. Pid文件名字
  3. 指定端口
  4. Log文件名字
  5. Dump.rdb名字
  6. Appendonly 关掉或者换名字
  7. cluster-enabled yes    打开集群模式
  8. cluster-config-file nodes-xxx.conf  设定节点配置文件名
  9. cluster-node-timeout 15000   设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
复制代码
redis.conf主要内容配置
  1. include /myredis/redis.conf
  2. pidfile /var/run/redis_6380.pid
  3. port 6380
  4. dbfilename dump6380.rdb
  5. cluster-enabled yes
  6. cluster-config-file nodes-6380.conf
  7. cluster-node-timeout 15000
复制代码
  1. root@LK:/myredis# redis-server redis6380.conf
  2. root@LK:/myredis# redis-server redis6381.conf
  3. root@LK:/myredis# redis-server redis6382.conf
  4. root@LK:/myredis# redis-server redis6389.conf
  5. root@LK:/myredis# redis-server redis6390.conf
  6. root@LK:/myredis# redis-server redis6392.conf
  7. root@LK:/myredis# ps -ef| grep redis
  8. root       86630    2002  0 13:04 ?        00:00:00 redis-server 127.0.0.1:6382 [cluster]
  9. root       86641    2002  0 13:05 ?        00:00:00 redis-server 127.0.0.1:6392 [cluster]
  10. root       86715    2002  0 13:07 ?        00:00:00 redis-server 127.0.0.1:6380 [cluster]
  11. root       86721    2002  0 13:08 ?        00:00:00 redis-server 127.0.0.1:6390 [cluster]
  12. root       86731    2002  0 13:08 ?        00:00:00 redis-server 127.0.0.1:6381 [cluster]
  13. root       86738    2002  0 13:08 ?        00:00:00 redis-server 127.0.0.1:6391 [cluster]
  14. root       86749   59701  0 13:08 pts/0    00:00:00 grep --color=auto redis
复制代码
  1. redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6382 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6392 127.0.0.1:6390 127.0.0.1:6391
复制代码
如果有远程连接,尽量不要用127.0.0.1
--replicas 1 采用最简单的方式配置集群,主机要有一个从机。
  1. root@LK:/opt/redis-7.0.2/src# redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6382 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6392 127.0.0.1:6390 127.0.0.1:6391
  2. >>> Performing hash slots allocation on 6 nodes...
  3. Master[0] -> Slots 0 - 5460
  4. Master[1] -> Slots 5461 - 10922
  5. Master[2] -> Slots 10923 - 16383
  6. Adding replica 127.0.0.1:6390 to 127.0.0.1:6382
  7. Adding replica 127.0.0.1:6391 to 127.0.0.1:6380
  8. Adding replica 127.0.0.1:6392 to 127.0.0.1:6381
  9. >>> Trying to optimize slaves allocation for anti-affinity
  10. [WARNING] Some slaves are in the same host as their master
  11. M: 3e81415f445fcfb480732a1550abc482a830513c 127.0.0.1:6382
  12.    slots:[0-5460] (5461 slots) master
  13. M: c6724e82265a3277458ef7e21e9ef0aa0e0965a6 127.0.0.1:6380
  14.    slots:[5461-10922] (5462 slots) master
  15. M: e761f014598833ba20d6c0256dd520b9824cf082 127.0.0.1:6381
  16.    slots:[10923-16383] (5461 slots) master
  17. S: 0f240fe2623bedb042c74917f75f65b5b8b45bcc 127.0.0.1:6392
  18.    replicates 3e81415f445fcfb480732a1550abc482a830513c
  19. S: 7052c51e19ee25dfb568cb09cd463383083eb4ea 127.0.0.1:6390
  20.    replicates c6724e82265a3277458ef7e21e9ef0aa0e0965a6
  21. S: ce2aa0395048c81e9e47c7344cf7fb20f9d2fc8c 127.0.0.1:6391
  22.    replicates e761f014598833ba20d6c0256dd520b9824cf082
  23. Can I set the above configuration? (type 'yes' to accept): yes
  24. >>> Nodes configuration updated
  25. >>> Assign a different config epoch to each node
  26. >>> Sending CLUSTER MEET messages to join the cluster
  27. Waiting for the cluster to join
  28. >>> Performing Cluster Check (using node 127.0.0.1:6382)
  29. M: 3e81415f445fcfb480732a1550abc482a830513c 127.0.0.1:6382
  30.    slots:[0-5460] (5461 slots) master
  31.    1 additional replica(s)
  32. M: c6724e82265a3277458ef7e21e9ef0aa0e0965a6 127.0.0.1:6380
  33.    slots:[5461-10922] (5462 slots) master
  34.    1 additional replica(s)
  35. S: 7052c51e19ee25dfb568cb09cd463383083eb4ea 127.0.0.1:6390
  36.    slots: (0 slots) slave
  37.    replicates c6724e82265a3277458ef7e21e9ef0aa0e0965a6
  38. M: e761f014598833ba20d6c0256dd520b9824cf082 127.0.0.1:6381
  39.    slots:[10923-16383] (5461 slots) master
  40.    1 additional replica(s)
  41. S: 0f240fe2623bedb042c74917f75f65b5b8b45bcc 127.0.0.1:6392
  42.    slots: (0 slots) slave
  43.    replicates 3e81415f445fcfb480732a1550abc482a830513c
  44. S: ce2aa0395048c81e9e47c7344cf7fb20f9d2fc8c 127.0.0.1:6391
  45.    slots: (0 slots) slave
  46.    replicates e761f014598833ba20d6c0256dd520b9824cf082
  47. [OK] All nodes agree about slots configuration.
  48. >>> Check for open slots...
  49. >>> Check slots coverage...
  50. [OK] All 16384 slots covered.
复制代码
  1. res-cli -c -p 6380
复制代码
  1. cluster nodes
复制代码
  1. 127.0.0.1:6380> cluster nodes
  2. e761f014598833ba20d6c0256dd520b9824cf082 127.0.0.1:6381@16381 master - 0 1656134521873 3 connected 10923-16383
  3. ce2aa0395048c81e9e47c7344cf7fb20f9d2fc8c 127.0.0.1:6391@16391 slave e761f014598833ba20d6c0256dd520b9824cf082 0 1656134522877 3 connected
  4. 7052c51e19ee25dfb568cb09cd463383083eb4ea 127.0.0.1:6390@16390 slave c6724e82265a3277458ef7e21e9ef0aa0e0965a6 0 1656134521000 2 connected
  5. 0f240fe2623bedb042c74917f75f65b5b8b45bcc 127.0.0.1:6392@16392 slave 3e81415f445fcfb480732a1550abc482a830513c 0 1656134520000 1 connected
  6. c6724e82265a3277458ef7e21e9ef0aa0e0965a6 127.0.0.1:6380@16380 myself,master - 0 1656134518000 2 connected 5461-10922
  7. 3e81415f445fcfb480732a1550abc482a830513c 127.0.0.1:6382@16382 master - 0 1656134521000 1 connected 0-5460
复制代码
  1. 127.0.0.1:6380> set k1 v1
  2. -> Redirected to slot [12706] located at 127.0.0.1:6381
  3. OK
  4. 127.0.0.1:6381>
复制代码
根据输入的key计算插槽位置,选择存储位置并跳转到对应的服务器地址
  1. #多值插入,通过组的方式
  2. 127.0.0.1:6381> mset t1{cust} v1 t2{cust} v2 t3{cust} v3
  3. -> Redirected to slot [4847] located at 127.0.0.1:6382
  4. OK
  5. #键也将以组的形式存在
  6. 127.0.0.1:6382> keys *
  7. 1) "t2{cust}"
  8. 2) "k2"
  9. 3) "t3{cust}"
  10. 4) "t1{cust}"
  11. #查询键也将以组的形式
  12. 127.0.0.1:6382> get t2{cust}
  13. "v2"
复制代码
  1. #查询当前键值的插槽位置
  2. cluster keyslot <cust>
  3. #查询当前槽位有几个值,只能查询当前服务器的插槽
  4. cluster countkeysinslot  <slot>
  5. # 获取当前槽位count数量的值
  6. cluster getkeysinslot  <slot> <count>
复制代码
jedis配置集群
  1. public class JedisClusterTest {
  2.         public static void main(String[] args) { 
  3.                 Set<HostAndPort> set =new HashSet<HostAndPort>();
  4.                 //集群中任意一个主机ip都可以使用,会自动发现其他主机,也可以手动放入多个
  5.                 //需要保持后台redis运行
  6.                 set.add(new HostAndPort("127.0.0.1",6380));
  7.                 JedisCluster jedisCluster=new JedisCluster(set);
  8.                 jedisCluster.set("kk1", "vv1");
  9.                 System.out.println(jedisCluster.get("kk1"));
  10.                 //节点数
  11.                 Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
  12.                 clusterNodes.forEach((s, jedisPool) -> System.out.println(s+jedisPool.toString()));
  13.         }
  14. }
复制代码
jedis的操作参考学习笔记六
  1. vv1
  2. 127.0.0.1:6382redis.clients.jedis.JedisPool@7f690630
  3. 127.0.0.1:6390redis.clients.jedis.JedisPool@edf4efb
  4. 127.0.0.1:6392redis.clients.jedis.JedisPool@2f7a2457
  5. 127.0.0.1:6381redis.clients.jedis.JedisPool@566776ad
  6. 127.0.0.1:6380redis.clients.jedis.JedisPool@6108b2d7
  7. 127.0.0.1:6391redis.clients.jedis.JedisPool@1554909b
复制代码
集群的优劣


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4