概述、搭建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"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:如何在 Ubuntu 上安装多个节点的 Elasticsearch 集群 - 8.x

Elasticsearch 是一个强大且可扩展的搜索和分析引擎&#xff0c;可用于索引和搜索大量数据。 Elasticsearch 通常用于集群环境中&#xff0c;以提高性能、提供高可用性并实现数据冗余。 在本文中&#xff0c;我们将讨论如何在 Ubuntu 20.04 上安装和配置具有多节点集群的 Elast…

关于Linux Docker springboot jar 日志时间不正确 问题解决

使用Springboot项目的jar&#xff0c;制作了一个Docker镜像&#xff0c;启动该镜像后发现容器和容器中的Springboot 项目的日志时间不正确。 解决 查看容器时间命令为&#xff1a; docker exec 容器id date 1. 容器与宿主机同步时间 在启动镜像时候把操作系统的时间通过&q…

SpringBoot创建和使用

spring core的方式来写代码还是比较繁琐的&#xff0c;而spring boot就是帮助程序员使用spring开发的一个脚手架&#xff08;boot&#xff09;&#xff0c;它是一个用于构建Java应用程序的开源框架&#xff0c;旨在简化开发流程并提高生产效率。它的主要优点有&#xff1a; 快速…

CSS简介

目录 CSS CSS概念 核心概念 为什么需要CSS 语法 CSS的引入方式 内联样式&#xff08;行内样式&#xff09; 内部样式 外部样式&#xff08;推荐&#xff09; CSS CSS概念 CSS&#xff08;Cascading Style Sheets&#xff09;层叠样式表&#xff0c;又叫级联样式表&am…

【Vue-Router】导航守卫

前置守卫 main.ts import { createApp } from vue import App from ./App.vue import {router} from ./router // import 引入 import ElementPlus from element-plus import element-plus/dist/index.css const app createApp(App) app.use(router) // use 注入 ElementPlu…

ShowMeBug CEO李亚飞受邀参加深圳青年创新创业系列沙龙电子信息专场

7月13日下午&#xff0c;由深圳市科技交流服务中心&#xff08;深圳市科技专家委员会办公室&#xff09;主办&#xff0c;深圳新一代产业园承办的“2023深圳青年创新创业系列沙龙——电子信息专场”活动举行。ShowMeBug CEO李亚飞受邀参加此次活动。 深圳市科学技术协会党组成员…

微信小程序真机调试异常cmdId 1006, errCode-50011-已解决

cmdId 1006, errCode-50011 起因 小程序在模拟器上预览没问题,真机调试和体验版首页打不开,点展开显示cmdId 1006, errCode-50011 解决 查了下1006, 说是广告, 我没接广告,这个也不是错误码 1006广告组件被驳回你的广告正在被审核,无法展现广告后来找到几个类似的帖子…

元宇宙时代超高清视音频技术白皮书关于流媒体协议和媒体传输解读

流媒体协议 元宇宙业务场景对流媒体传输的实时性和互动性提出了更高的要求&#xff0c;这就需要在传统的 RTMP、SRT、 HLS 等基础上增加实时互动的支持。实时互动&#xff0c;指在远程条件下沟通、协作&#xff0c;可随时随地接入、实时地传递虚实融合的多维信息&#xff0c;身…

万宾燃气管网监测解决方案,守护城市生命线安全

方案背景 城市燃气管网作为连接天然气长输管线与天然气用户的桥梁&#xff0c;担负着向企业和居民用户直接供气的重要职责。随着城市燃气需求的急剧增加&#xff0c;城市燃气管网规模日趋庞大&#xff0c;安全隐患和风险也随之增加。目前&#xff0c;我国燃气管网的运行仍存在…

Mathematica(42)-计算N个数值的和

比如&#xff0c;我们要用Mathematica求得到下面的式子&#xff1a; 这就需要用到一个函数&#xff1a;Sum 具体地&#xff0c;Sum函数的使用形式如下&#xff1a; 因此&#xff0c;按照公式就可以得到下面的结果&#xff1a; 如果&#xff0c;我们想要将求和号也加进去&#…

【AIGC 讯飞星火 | 百度AI|ChatGPT| 】智能对比

AI智能对比 &#x1f378; 前言&#x1f37a; 概念类对比&#x1f375; 讯飞&#x1f375; 百度AI&#x1f375; chatGPT &#x1f379; 功能类对比☕ 讯飞☕ 百度AI☕ chatGPT &#x1f943; 可输入字数对比&#x1f964; 百度AI&#x1f964; 讯飞&#x1f964; chatGPT &…

【Django】Task1安装python环境及运行项目

【Django】Task1安装python环境及运行项目 写在最前 8月份Datawhale组队学习&#xff0c;在这个群除我佬的时代&#xff0c;写一下blog记录学习过程。 参考资源&#xff1a; 学习项目github&#xff1a;https://github.com/Joe-2002/sweettalk-django4.2 队长博客&#xff1a…

RocketMQ 消息消费 轮询机制 PullRequestHoldService

1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥。首先需要补充一点消费相关的前置知识。 1.1 消息消费方式 RocketMQ 支持多种消费方式&#xff0c;包括 Push 模式和 Pull 模式 Pull 模式&#xff1a;用户自己进行消息的拉取和消费进度的更新Push 模式&#xff1a;Broker…

探索心律失常:病因、诊断与治疗以及与肠道菌群的关联

谷禾健康 你是否有时会感到心悸、心慌、胸闷、气短、头晕、乏力&#xff1f;你是否有时感觉自己的心跳过快或过慢&#xff1f; 如果有上述情况&#xff0c;就要引起重视了&#xff0c;你可能存在心律失常。心律失常是最常见的心脏疾病之一&#xff0c;涉及到心脏的电活动节奏异…

麻辣烫数据可视化,麻辣烫市场将持续蓬勃发展

麻辣烫&#xff0c;这道源自中国的美食&#xff0c;早已成为人们生活中不可或缺的一部分。它独特的香辣口味&#xff0c;让人忍不住每每流连忘返。与人们的关系&#xff0c;简直如同挚友一般。每当寒冷的冬日或疲惫的时刻&#xff0c;麻辣烫总是悄然走进人们的心房&#xff0c;…

i.MX6ULL开发板无法进入NFS挂载文件系统的解决办法

问题 使用NFS网络挂载文件系统后卡住无法进入系统。 解决办法 此处不详细讲述NFS安装流程 查看板卡挂载在/home/etc/rc.init下的自启动程序 进入到../../home/etc目录下&#xff0c;查看rc.init文件&#xff0c;首先从第一行排查&#xff0c;查看/home/etc/netcfg文件代码内容&…

Flask-SQLAlchemy

认识Flask-SQLAlchemy Flask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。 ORM优缺点 优点 有语法提示, 省去自己拼写SQL&#xff0c;保证SQL…

spring的核心技术---bean的生命周期加案例分析详细易懂

目录 一.spring管理JavaBean的初始化过程&#xff08;生命周期&#xff09; Spring Bean的生命周期&#xff1a; 二.spring的JavaBean管理中单例模式及原型&#xff08;多例&#xff09;模式 2.1 . 默认为单例&#xff0c;但是可以配置多例 2.2.举例论证 2.2.1 默认单例 2.2…

前端常用算法(一):防抖+节流

目录 第一章 防抖 1.1 防抖&#xff08;debounce&#xff09;简介 1.2 应用场景 1.3 实现思路 1.4 手撕防抖代码 第二章 节流 2.1 节流&#xff08;throttle&#xff09;简介 2.2 应用场景 2.3 实现思路 2.4 手撕节流代码&#xff08;方法&#xff1a;时间戳和计时器…

MR300C工业无线WiFi图传模块 内窥镜机器人图像传输有线无线的两种方式

MR300C无线WiFi图传模使用方法工业机器人图像高清传输 ⚫ MR300C图传模块基于MIPS处理器实现&#xff0c;电脑/手机连接模块的WIFI热点或网口即可查看视频流 ⚫ 模块的USB 2.0 Host接口&#xff0c;可接入USB uvc摄像头/内窥镜默认输出的视频格式必须是MJPG ⚫ 模块支持接入摄…