概述、搭建Redis服务器、部署LNP+Redis、创建Redis集群、连接集群、集群工作原理

Top

NSD DBA DAY09

  1. 案例1:搭建redis服务器
  2. 案例2:常用命令限
  3. 案例3:部署LNP+Redis
  4. 案例4:创建redis集群

1 案例1:搭建redis服务器

1.1 具体要求如下

  1. 在主机redis64运行redis服务
  2. 修改服务运行参数
  • ip 地址192.168.88.64
  • 服务监听的端口6364
  • redis服务的连接密码为 tarenaplj

1.2 方案

准备1台新虚拟机,要求如表-1所示。

 

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在主机redis64运行redis服务

命令操作如下所示:

  1. [root@redis64 ~]# yum -y install redis 安装软件
  2. [root@redis64 ~]# systemctl start redis 启动服务
  3. [root@redis64 ~]# netstat -utnlp | grep redis-server 查看端口
  4. tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1970/redis-server 1
  5. [root@redis64 ~]# redis-cli 连接服务
  6. 127.0.0.1:6379> ping 检查能否正在访问
  7. PONG
  8. 127.0.0.1:6379> set school tarena 存储变量
  9. OK
  10. 127.0.0.1:6379> get school 查看变量
  11. "tarena"
  12. 127.0.0.1:6379> exit 断开连接
  13. [root@redis64 ~]#

步骤二:修改服务运行参数

命令操作如下所示:

  1. [root@redis64 ~]# systemctl stop redis
  2. [root@redis64 ~]# vim /etc/redis.conf
  3. 69 bind 192.168.88.64
  4. 92 port 6364
  5. 647 requirepass tarenaplj
  6. :wq
  7. [root@redis64 ~]# setenforce 0
  8. [root@redis64 ~]# systemctl start redis
  9. [root@redis64 ~]# netstat -utnlp | grep redis-server
  10. tcp 0 0 192.168.88.64:6364 0.0.0.0:* LISTEN 2009/redis-server 1
  11. [root@redis64 ~]#
  12. [root@redis64 ~]# redis-cli -h 192.168.88.64 -p 6364 连接服务
  13. 192.168.88.64:6364> ping 不输入密码无法正常访问
  14. (error) NOAUTH Authentication required.
  15. 192.168.88.64:6364> auth tarenaplj 输入密码
  16. OK
  17. 192.168.88.64:6364> keys * 查看存储的变量
  18. 1) "school"
  19. 192.168.88.64:6364> exit 断开连接
  20. [root@redis64 ~]#

2 案例2:常用命令限

2.1 问题

1)练习如下命令的使用

  • mset mget keys type
  • exists ttl expire move select
  • del flushdb flushall

2.2 方案

在搭建的redis64练习常用命令的使用。

2.3 步骤

实现此案例需要按照如下步骤进行。

命令操作如下所示:

  1. 192.168.88.64:6364> mset name plj age 80 class nsd2108 一起存储多个变量
  2. OK
  3. 192.168.88.64:6364> keys *
  4. 1) "age"
  5. 2) "classs"
  6. 3) "name"
  7. 4) "school"
  8. 192.168.88.64:6364> mget name age 一起查看多个变量
  9. 1) "plj"
  10. 2) "80"
  11. keys 使用统配符查看变量
  12. * 匹配所有变量名
  13. ? 一个字符
  14. 192.168.88.64:6364> keys *
  15. 1) "age"
  16. 2) "classs"
  17. 3) "name"
  18. 4) "school"
  19. 192.168.88.64:6364> keys ??? 变量名是3个字符
  20. 1) "age"
  21. 192.168.88.64:6364> keys a* 变量名是a 开头的
  22. 1) "age"
  23. 192.168.88.64:6364>
  24. 192.168.88.64:6364> keys gender 查看指定变量是否存在
  25. (empty list or set) 说明变量没有定义
  26. 192.168.88.64:6364> keys name
  27. 1) "name"
  28. 192.168.88.64:6364>
  29. select 切换库 默认库编号 0-15
  30. 192.168.88.64:6364> select 1 切换到 1号库里
  31. OK
  32. 192.168.88.64:6364[1]> keys * 查看数据没有数据
  33. (empty list or set)
  34. 192.168.88.64:6364[1]>
  35. 192.168.88.64:6364[1]> select 0
  36. OK
  37. 192.168.88.64:6364> select 16
  38. (error) ERR DB index is out of range
  39. move 命令 移动变量到其他库里
  40. 192.168.88.64:6364> keys *
  41. 1) "age"
  42. 2) "classs"
  43. 3) "name"
  44. 4) "school"
  45. 192.168.88.64:6364> move age 1 把age 变量移动到1 号库里
  46. (integer) 1
  47. 192.168.88.64:6364> keys *
  48. 1) "classs"
  49. 2) "name"
  50. 3) "school"
  51. 192.168.88.64:6364> select 1
  52. OK
  53. 192.168.88.64:6364[1]> keys *
  54. 1) "age"
  55. exists 检查变量是否存储 返回值1 变量存储 返回值是0 变量不存在
  56. 192.168.88.64:6364[1]> select 0
  57. OK
  58. 192.168.88.64:6364> EXISTS name 检查name变量是否存在
  59. (integer) 1
  60. 192.168.88.64:6364> get name
  61. "plj"
  62. 192.168.88.64:6364> set name bob
  63. OK
  64. 192.168.88.64:6364> get name
  65. "bob"
  66. 192.168.88.64:6364>
  67. EXPIRE 命令设置变量的过期时间 不设置变量永不过期
  68. ttl 检查变量可以在内存里存多久
  69. 192.168.88.64:6364> set sex girl
  70. OK
  71. 192.168.88.64:6364> ttl sex
  72. (integer) -1 表示永不过期
  73. 192.168.88.64:6364> EXPIRE sex 15 设置过期时间15 秒
  74. (integer) 1
  75. 192.168.88.64:6364> keys sex
  76. 1) "sex"
  77. 192.168.88.64:6364> ttl sex
  78. (integer) 8 还剩下8秒时间过期
  79. 192.168.88.64:6364> ttl sex
  80. (integer) -2 表示已经过期被删除
  81. 192.168.88.64:6364> keys sex
  82. (empty list or set)
  83. 192.168.88.64:6364>
  84. type 命令检查变量存储数据的类型
  85. 使用set mset命令存储的数据都字符类型。
  86. 数据的类型不同 管理的命令也不同
  87. 明天讲数据类型。
  88. 192.168.88.64:6364> set x 99
  89. OK
  90. 192.168.88.64:6364> mset y 108
  91. OK
  92. 192.168.88.64:6364> type x
  93. string
  94. 192.168.88.64:6364> type y
  95. string
  96. 192.168.88.64:6364> lpush tea nb wk zzg plj lx 定义类别类型的变量tea
  97. 192.168.88.64:6364> type tea 查看变量类型 list 列表类型的数据
  98. list
  99. del 删除内存里的变量
  100. 192.168.88.64:6364> keys *
  101. 1) "y"
  102. 2) "tea"
  103. 3) "name"
  104. 4) "school"
  105. 5) "x"
  106. 6) "classs"
  107. 192.168.88.64:6364> del tea y school
  108. (integer) 3
  109. 192.168.88.64:6364> keys *
  110. 1) "name"
  111. 2) "x"
  112. 3) "classs"
  113. 192.168.88.64:6364>
  114. flushdb 删除当前所在库的所有数据
  115. 192.168.88.64:6364> keys *
  116. 1) "name"
  117. 2) "x"
  118. 3) "classs"
  119. 192.168.88.64:6364> flushdb
  120. OK
  121. 192.168.88.64:6364> keys *
  122. (empty list or set)
  123. 192.168.88.64:6364> SELECT 1
  124. OK
  125. 192.168.88.64:6364[1]> keys *
  126. 1) "age"
  127. 192.168.88.64:6364[1]> flushall 删除内存里的所有内存里所有数据 (慎用)

3 案例3:部署LNP+Redis

3.1 问题

  1. 在主机192.168.88.64部署LNP 环境
  2. 配置PHP支持redis
  3. 编写网站脚本,把数据存储到本机的内存里

3.2 方案

在redis64主机同时运行nginx 服务,并配置nginx服务可以把数据存储在本机的redis内存服务里。

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在主机192.168.88.64部署LNP 环境

1)安装源码nginx及php

  1. ]#yum -y install gcc pcre-devel zlib-devel make 安装依赖
  2. ]#]# tar -xf nginx-1.22.1.tar.gz 解压源码
  3. ]#cd nginx-1.22.1 进源码目录
  4. ]#./configure 配置
  5. ]#make 编译
  6. ]#make install 安装
  7. ]# ls /usr/local/nginx/ 查看安装目录
  8. conf html logs sbin
  9. ]# yum -y install php php-fpm php-devel 安装php 软件

2)配置动静分离

  1. ]# vim +65 /usr/local/nginx/conf/nginx.conf
  2. location ~ \.php$ {
  3. root html;
  4. fastcgi_pass 127.0.0.1:9000;
  5. fastcgi_index index.php;
  6. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  7. include fastcgi.conf;
  8. }
  9. :wq

3)启动nginx服务

  1. [root@redis64 ~]# /usr/local/nginx/sbin/nginx -t 测试配置
  2. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  3. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  4. [root@redis64 ~]#
  5. [root@redis64 ~]# /usr/local/nginx/sbin/nginx 启动服务
  6. [root@redis64 ~]# netstat -utnlp | grep 80
  7. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10469/nginx: master
  8. [root@redis64 ~]#
  1. 启动php-fpm服务
  2. ]# vim /etc/php-fpm.d/www.conf
  3. 38 ;listen = /run/php-fpm/www.sock
  4. 39 listen = 127.0.0.1:9000 非sock方式运行 (不是必须的)
  5. :wq
  6. [root@redis64 ~]# systemctl start php-fpm 启动服务
  7. [root@redis64 ~]# netstat -utnlp | grep 9000 查看端口
  8. tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10477/php-fpm: mast
  9. [root@redis64 ~]#
  10. 测试配置
 
  1. [root@redis64 ~]# vim /usr/local/nginx/html/test.php 编写php脚本
  2. <?php
  3. echo "hello world!!! \n";
  4. ?>
  5. [root@redis64 ~]# curl http://localhost/test.php 访问php脚本
  6. hello world!!!
  7. [root@redis64 ~]#

步骤二:配置PHP支持redis

1)安装软件提供模块

--with-php-config=/usr/bin/php-config 获取php版本信息

 
  1. [root@redis64 pub]# tar -xf redis-cluster-4.3.0.tgz 解压源码
  2. [root@redis64 pub]# cd redis-4.3.0/ 进源码目录
  3. [root@redis64 redis-4.3.0]# phpize 获取php版本信息
  4. Configuring for:
  5. PHP Api Version: 20170718
  6. Zend Module Api No: 20170718
  7. Zend Extension Api No: 320170718
  8. [root@redis64 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config 配置
  9. [root@redis64 redis-4.3.0]# make && make install 编译并安装
  10. Build complete.
  11. Don't forget to run 'make test'.
  12. Installing shared extensions: /usr/lib64/php/modules/ 提示模块安装的位置
  13. [root@redis64 redis-4.3.0]# ls /usr/lib64/php/modules/redis.so 查看模块
  14. /usr/lib64/php/modules/redis.so
  15. [root@redis64 redis-4.3.0]#

2)调用模块

 
  1. [root@redis64 redis-4.3.0]# vim /etc/php.ini 编辑php进程主配置文件
  2. 737 extension_dir = "/usr/lib64/php/modules/" 指定模块所在目录
  3. 739 extension = "redis.so" 指定模块名
  4. :wq

3)加载模块

 
  1. [root@redis64 redis-4.3.0]# systemctl restart php-fpm

4)查看模块

 
  1. [root@redis64 ~]# php -m | grep redis
  2. redis
  3. [root@redis64 ~]#

步骤三:编写网站脚本,把数据存储到本机的内存里

1)允许通过lo口连接本机redis服务

 
  1. [root@redis64 ~]# systemctl stop redis
  2. [root@redis64 ~]# vim /etc/redis.conf
  3. 69 bind 127.0.0.1 192.168.88.64
  4. :wq
  5. [root@redis64 ~]# netstat -utnlp | grep redis-server
  6. tcp 0 0 192.168.88.64:6364 0.0.0.0:* LISTEN 12794/redis-server
  7. tcp 0 0 127.0.0.1:6364 0.0.0.0:* LISTEN 12794/redis-server
  8. [root@redis64 ~]#

2)编写php脚本

 
  1. [root@redis64 ~]# vim /usr/local/nginx/html/redis.php
  2. <?php
  3. $redis = new redis();
  4. $redis->connect("127.0.0.1", "6364");
  5. $redis->auth("tarenaplj");
  6. $redis->set("class","nsd");
  7. echo "save ok\n";
  8. ?>

3)访问脚本

 
  1. [root@redis64 ~]# curl http://localhost/redis.php
  2. save ok
  3. [root@redis64 ~]#

4)连接redis服务查看变量

 
  1. [root@redis64 ~]# redis-cli -h 127.0.0.1 -p 6364
  2. 127.0.0.1:6364> auth tarenaplj
  3. OK
  4. 127.0.0.1:6364> keys *
  5. 1) "school"
  6. 2) "class"
  7. 127.0.0.1:6364> get class
  8. "nsd"
  9. 127.0.0.1:6364>

4 案例4:创建redis集群

4.1 问题

  1. 准备集群环境
  2. 创建集群
  3. 查看集群信息
  4. 访问集群

4.2 方案

创建6台新虚拟机,具体要求如表-2所示。

 

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备集群环境

说明:准备做集群的主机,不允许存储数据、不允许设置连接密码

配置服务器192.168.88.51

 
  1. ]# yum -y install redis 安装软件
  2. ]# vim /etc/redis.conf 修改主配置文件夹
  3. 92 port 6379 //端口号
  4. 69 bind 192.168.88.51 //IP地址
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 5000 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.51:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.51:16379 0.0.0.0:* LISTEN 21201/redis-serve

配置服务器192.168.88.52

 
  1. ]# yum -y install redis
  2. ]# vim /etc/redis.conf
  3. 92 port 6379
  4. 69 bind 192.168.88.52
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 5000 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.52:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.52:16379 0.0.0.0:* LISTEN 21201/redis-serve

配置服务器192.168.88.53

 
  1. ]# yum -y install redis
  2. ]# vim /etc/redis.conf
  3. 92 port 6379
  4. 69 bind 192.168.88.53
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 5000 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.53:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.53:16379 0.0.0.0:* LISTEN 21201/redis-serve

配置服务器192.168.88.54

 
  1. ]# yum -y install redis
  2. ]# vim /etc/redis.conf
  3. 92 port 6379
  4. 69 bind 192.168.88.54
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 5000 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.54:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.54:16379 0.0.0.0:* LISTEN 21201/redis-serve

配置服务器192.168.88.55

 
  1. ]# yum -y install redis
  2. ]# vim /etc/redis.conf
  3. 92 port 6379
  4. 69 bind 192.168.88.55
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 5000 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.55:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.55:16379 0.0.0.0:* LISTEN 21201/redis-serve

配置服务器192.168.88.56

 
  1. ]# yum -y install redis
  2. ]# vim /etc/redis.conf
  3. 92 port 6379
  4. 69 bind 192.168.88.56
  5. 838 cluster-enabled yes              //启用集群功能
  6. 846 cluster-config-file nodes-6379.conf         //存储集群信息文件
  7. 852 cluster-node-timeout 50ha00 //集群中主机通信超时时间
  8. :wq
  9. ]# systemctl start redis
  10. ]# netstat -utnlp | grep redis-serve
  11. tcp 0 0 192.168.88.56:6379 0.0.0.0:* LISTEN 21201/redis-serve
  12. tcp 0 0 192.168.88.56:16379 0.0.0.0:* LISTEN 21201/redis-serve

步骤二:创建集群

说明:

1、在任意一台redis服务器上都可以执行创建集群的命令。

2、--cluster-replicas 1 给每个master服务器分配一台slave服务器,每个主至少要分配1台slave服务器,不然无法实现redis服务的高可用。

3、创建集群时,会自动创建主从角色,默认把主机列表中的前3台服务器创建为

Master角色的redis服务器,剩下的均配置为slave角色服务器。

4、创建集群时,会自动给master角色的主机分配hash槽 ,通过hash槽实现数据的分布式存储。

 
  1. ]# redis-cli --cluster create 192.168.88.51:6379 192.168.88.52:6379 192.168.88.53:6379 192.168.88.54:6379 192.168.88.55:6379 192.168.88.56:6379 --cluster-replicas 1
  2. >>> Creating cluster
  3. >>> Performing hash slots allocation on 6 nodes...
  4. Using 3 masters:
  5. 192.168.88.51:6379
  6. 192.168.88.52:6379
  7. 192.168.88.53:6379
  8. Adding replica 192.168.88.55:6379 to 192.168.88.51:6379
  9. Adding replica 192.168.88.56:6379 to 192.168.88.52:6379
  10. Adding replica 192.168.88.54:6379 to 192.168.88.53:6379
  11. M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
  12. slots:0-5460 (5461 slots) master
  13. M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
  14. slots:5461-10922 (5462 slots) master
  15. M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
  16. slots:10923-16383 (5461 slots) master
  17. S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
  18. replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
  19. S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
  20. replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
  21. S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
  22. replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
  23. Can I set the above configuration? (type 'yes' to accept): yes 同意
  24. ....
  25. ....
  26. [OK] All nodes agree about slots configuration.
  27. >>> Check for open slots...
  28. >>> Check slots coverage...
  29. [OK] All 16384 slots covered. //创建成功的提示

步骤三:查看集群信息

第一列:主服务器ip地址

第二列:主服务器ID

第三列:存储变量个数

第四列:hash槽个数 (hash槽的作用在集群存储工程过程里讲)

第五列:从服务器数量

 
  1. ]# redis-cli --cluster info 192.168.88.51:6379
  2. 192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
  3. 192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
  4. 192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
  5. [OK] 0 keys in 3 masters.
  6. 0.00 keys per slot on average.

步骤四:访问集群

 
  1. [root@host51 ~]# redis-cli -c -h 192.168.88.51 -p 6379
  2. 192.168.88.51:6379> set school tarena
  3. -> Redirected to slot [8455] located at 192.168.88.52:6379
  4. OK
  5. 192.168.88.52:6379> set teacher plj
  6. -> Redirected to slot [12541] located at 192.168.88.53:6379
  7. OK
  8. 192.168.88.53:6379> set class NSD
  9. -> Redirected to slot [741] located at 192.168.88.51:6379
  10. OK
  11. 192.168.88.51:6379>

会发现3个变量被分别存储到集群中的3台master服务器上,实现了数据的分布式存储。当连接集群中的任意一台redis服务器存储数据时,会调用集群CRC16算法 得出此次

存储变量使用的hash 槽,然后连接hash 槽 所在的master服务器存储变量。

在创建集群时会把默认的16384个槽平均的分配给集群中的3个master服务器。可以通过查看集群信息查看每个master服务器占用hash槽的个数。

 
  1. ]# redis-cli --cluster info 192.168.88.51:6379
  2. 192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
  3. 192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
  4. 192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
  5. [OK] 0 keys in 3 masters.
  6. 0.00 keys per slot on average.

集群中slave角色的主机会自动同步master角色主机的数据,实现数据的自动备份,

分别连接集群中的3台slave服务器查看变量

 
  1. [root@host54 ~]# redis-cli -c -h 192.168.88.54 -p 6379
  2. 192.168.88.54:6379> keys *
  3. 1) "class"
  4. [root@host55 ~]# redis-cli -c -h 192.168.88.55 -p 6379
  5. 192.168.88.55:6379> keys *
  6. 1) "school"
  7. [root@host56 ~]# redis-cli -c -h 192.168.88.56 -p 6379
  8. 192.168.88.56:6379> keys *
  9. 1) "teacher"

当master角色的服务器宕机时,对应的slave服务器会升级为master 并接手对应的hash槽,实现redis服务的高可用,例如停止host53主机的redis服务,对应的从会升级为master 。(当宕机的master恢复后 自动做当前主的从服务器)

 
  1. 停止redis服务
  2. [root@host53 ~]# systemctl stop reddis
  3. 查看集群信息
  4. [root@host51 ~]#]# redis-cli --cluster info 192.168.88.51:6379
  5. 192.168.88.54:6379 (f2c1bdb7...) -> 1 keys | 5461 slots | 0 slaves.
  6. 192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 5461 slots | 1 slaves.
  7. 192.168.88.52:6379 (a9cb8ccd...) -> 1 keys | 5462 slots | 1 slaves.
  8. [OK] 0 keys in 3 masters.
  9. keys per slot on average.
  10. 启动redis服务
  11. [root@host53 ~]# systemctl start reddis
  12. 查看集群信息
  13. [root@host51 ~]#]# redis-cli --cluster info 192.168.88.51:6379
  14. 192.168.88.54:6379 (f2c1bdb7...) -> 1 keys | 5461 slots | 1 slaves.
  15. 192.168.88.51:6379 (0eb3b7aa...) -> 1 keys | 5461 slots | 1 slaves.
  16. 192.168.88.52:6379 (a9cb8ccd...) -> 1 keys | 5462 slots | 1 slaves.
  17. [OK] 0 keys in 3 masters.
  18. keys per slot on average.
  19. 存储数据脚本
  20. [root@redis64 ~]# vim /usr/local/nginx/html/set.php
  21. <?php
  22. $redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379'];
  23. $client = new RedisCluster(NUll,$redis_list);
  24. $client->set("i","tarenaA ");
  25. $client->set("j","tarenaB ");
  26. $client->set("k","tarenaC ");
  27. echo "save ok\n";
  28. ?>
  29. :wq
  30. 查看数据脚本
  31. [root@ redis64 ~]# vim /usr/local/nginx/html/get_data.php
  32. <?php
  33. $redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379']; //定义redis服务器列表
  34. $client = new RedisCluster(NUll,$redis_list); //定义连接redis服务命令
  35. echo $client->get("i"); //获取变量i 的数据
  36. echo $client->get("j"); //获取变量j 的数据
  37. echo $client->get("k"); //获取变量k 的数据
  38. ?>
  39. :wq

3)访问脚本

 
  1. ]# curl http://192.168.88.64/set_data.php
  2. save ok
  3. ]# curl http://192.168.88.64/get_data.php
  4. tarenaA tarenaB tarenaC

4)命令行连接redis集群主机查看数据

 
  1. [root@host51 ~]# redis-cli -c -h 192.168.88.51 -p 6379
  2. 192.168.88.51:6379> keys *
  3. 1) "j"
  4. [root@host52 ~]# redis-cli -c -h 192.168.88.52 -p 6379
  5. 192.168.88.52:6379> keys *
  6. 1) "k"
  7. [root@host53 ~]# redis-cli -c -h 192.168.88.53 -p 6379
  8. 192.168.88.53:6379> keys *
  9. 1) "i"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/80727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 ubuntu 18.04 上使用源码升级 OpenSSH_7.6p1到 OpenSSH_9.3p1

1、检查系统已安装的当前 SSH 版本 使用命令 ssh -V 查看当前 ssh 版本&#xff0c;输出如下&#xff1a; OpenSSH_7.6p1 Ubuntu-4ubuntu0.7, OpenSSL 1.0.2n 7 Dec 20172、安装依赖&#xff0c;依次执行以下命令 sudo apt update sudo apt install build-essential zlib1g…

[论文笔记]Glancing Transformer for Non-Autoregressive Neural Machine Translation

引言 这是论文Glancing Transformer for Non-Autoregressive Neural Machine Translation的笔记。 传统的非自回归文本生成速度较慢,因为需要给定之前的token来预测下一个token。但自回归模型虽然效率高,但性能没那么好。 这篇论文提出了Glancing Transformer,可以只需要一…

6.RocketMQ之索引文件ConsumeQueue

本文着重分析为consumequeue/topic/queueId目录下的索引文件。 1.ConsumeQueueStore public class ConsumeQueueStore {protected final ConcurrentMap<String>, ConcurrentMap<Integer>, ConsumeQueueInterface>> consumeQueueTable;public boolean load(…

Selenium 测试用例编写

编写Selenium测试用例就是模拟用户在浏览器上的一系列操作&#xff0c;通过脚本来完成自动化测试。 编写测试用例的优势&#xff1a; 开源&#xff0c;免费。 支持多种浏览器 IE&#xff0c;Firefox&#xff0c;Chrome&#xff0c;Safari。 支持多平台 Windows&#xff0c;Li…

Xxl-job安装部署以及SpringBoot集成Xxl-job使用

1、安装Xxl-job&#xff1a; 可以使用docker拉取镜像部署和源码编译两种方式&#xff0c;这里选择源码编译安装。 代码拉取地址&#xff1a; https://github.com/xuxueli/xxl-job/tree/2.1.2 官方开发文档&#xff1a; https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%…

Android5:活动生命周期

创建项目Stopwatch activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_w…

ROS-PyQt小案例

前言&#xff1a;目前还在学习ROS无人机框架中&#xff0c;&#xff0c;&#xff0c; 更多更新文章详见我的个人博客主页【前往】 ROS与PyQt5结合的小demo&#xff0c;用于学习如何设计一个界面&#xff0c;并与ROS中的Service和Topic结合&#xff0c;从而控制多个小乌龟的运动…

设计HTML5表单

HTML5基于Web Forms 2.0标准对HTML4表单进行全面升级&#xff0c;在保持简便、易用的基础上&#xff0c;新增了很多控件和属性&#xff0c;从而减轻了开发人员的负担。表单为访问者提供了与网站进行互动的途径&#xff0c;完整的表单一般由控件和脚本两部分组成。 1、认识HTML…

ansible的playbook剧本

playbook剧本 PlayBook1.playbooks 本身由以下各部分组成2.示例&#xff1a;3.运行playbook补充参数&#xff1a; 4.定义、引用变量5.指定远程主机sudo切换用户6.when条件判断7.迭代8.Templates 模块1.先准备一个以 .j2 为后缀的 template 模板文件&#xff0c;设置引用的变量2…

记录--webpack和vite原理

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 每次用vite创建项目秒建好&#xff0c;前几天用vue-cli创建了一个项目&#xff0c;足足等了我一分钟&#xff0c;那为什么用 vite 比 webpack 要快呢&#xff0c;这篇文章带你梳理清楚它们的原理…

Linux命令200例:clock的具体应用,设置系统的时钟时间、硬件时钟和定时器等相关信息

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

Atlas 元数据管理

Atlas 元数据管理 1.Atlas入门 1.1概述 元数据原理和治理功能&#xff0c;用以构建数据资产的目录。对这个资产进行分类和管理&#xff0c;形成数据字典。 提供围绕数据资产的协作功能。 表和表之间的血缘依赖 字段和字段之间的血缘依赖 1.2架构图 导入和导出&#xff1…

Educational Codeforces Round 62 (Rated for Div. 2) C. Playlist

一开始肯定要排个序&#xff0c;b相同时t大的在前边&#xff0c;不同时b大的在前面。 然后想最多只能选k个的限制&#xff0c;可以这样想&#xff0c;每次用到的b只能用已选到的最小的值&#xff0c;那可以把每个b都枚举一遍&#xff0c;然后每一次选时长最长的&#xff0c;且…

CCF C³ 走进百度:大模型与可持续生态发展

2023年8月10日&#xff0c;由CCF CTO Club发起的第22期C活动在百度北京总部进行&#xff0c;以“AI大语言模型技术与生态发展”主题&#xff0c;50余位企业界、学界专家、研究人员就此进行深入探讨。 CCF C走进百度 本次活动&#xff0c;CCF秘书长唐卫清与百度集团副总裁、深…

DeepSort:基于检测的目标跟踪的经典

本文来自公众号“AI大道理” DeepSORT在SORT的基础上引入了深度学习的特征表示和更强大的目标关联方式&#xff0c;有效地减少了身份切换的数量&#xff0c;缓解了重识别问题。 ​ 1、DeepSORT简介 DeepSORT的主要思想是将目标检测和目标跟踪两个任务相结合。 首先使用目标检…

Docker环境安装elasticsearch和kibana

一、安装elasticsearch 创建es-network&#xff0c;让es、kibana在同一个网段&#xff1a; docker network create --driverbridge --subnet192.168.1.10/24 es-network运行elasticsearch docker run -d \ --name elasticsearch \ # 容器名 --hostname elasticsearch # 主机…

综述:计算机视觉中的图像分割

一、说明 这篇文章是关于图像分割的探索&#xff0c;这是解决计算机视觉问题&#xff08;如对象检测、对象识别、图像编辑、医学图像分析、自动驾驶汽车等&#xff09;的重要步骤之一。让我们从介绍开始。 二、图像分割介绍 图像分割是计算机视觉中的一项基本任务&#xff0c;涉…

Maven基础之仓库、命令、插件机制

文章目录 Maven 仓库中央仓库和本地仓库中央仓库本地仓库 Maven 命令generate 命令compile 命令clean 命令test 命令package 命令install 命令 Maven 插件机制官方插件&#xff1a;Compile 插件Tomcat 7 插件 Maven 仓库 中央仓库和本地仓库 [✎] 简单一点说 中央仓库是一个网…

k8s基本概念、k8s对象、三个命令玩转所有的yaml写法、给vscode安装插件、kubectl和kubelet及自动补全

文章目录 1、K8S基本概念2、kubernetes Objects&#xff08;k8s对象&#xff09;2.1、定义2.2、对象的spec和status2.3、如何写任意资源的yaml&#xff08;以Pod为例&#xff09;2.4、pod的yaml文件2.5、k8s对象yaml的结构2.6、管理k8s对象2.7、对象名称2.8、名称空间2.9、标签…

图神经网络 day2 图的分类

图神经网络基础算法 1 GCN2 GraphSAGE2.1 采样&#xff1a;采样固定长度的邻居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 图网络的分类4.1 递归图神经网络 RGNN4.2 图卷积神经网络GCN4.3 图注意力网络 GAT4.4 图自动编码 GAE4.5 图时空网络 GSTN4.6 图生…