概述、搭建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.rhkb.cn/news/92107.html

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

相关文章

四张图片道清AI大模型的发展史(1943-2023)

四张图片道清AI大模型的发展史(1943-2023) 现在最火的莫过于GPT了&#xff0c;也就是大规模语言模型(LLM)。“LLM” 是 “Large Language Model”&#xff08;大语言模型&#xff09;的简称&#xff0c;通常用来指代具有巨大规模参数和复杂架构的自然语言处理模型&#xff0c;…

从零开始,外贸邮件营销如何做?

邮件营销是外贸企业开发新用户和维系老客户非常有效的方法之一&#xff0c;因其操作方便快捷、成本低廉且精准投放的特性&#xff0c;已成为外贸行业的必备营销手段。但如何才能利用好邮件营销&#xff0c;让邮件营销的作用发挥到最大呢&#xff1f;今天U-Mail李工就跟大家分享…

Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享

Python FlaskEchartssklearnMySQL(评论情感分析、用户推荐、BI报表)项目分享 项目背景&#xff1a; 随着互联网的快速发展和智能手机的普及&#xff0c;人们越来越倾向于在网上查找餐厅、购物中心、酒店和旅游景点等商户的点评和评分信息&#xff0c;以便做出更好的消费决策。…

vue3+ts使用antv/x6 + 自定义节点

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

数据库概述、部署MySQL服务、必备命令、密码管理、安装图形软件、SELECT语法 、筛选条件

Top NSD DBA DAY01 案例1&#xff1a;构建MySQL服务器案例2&#xff1a;密码管理案例3&#xff1a;安装图形软件案例4&#xff1a;筛选条件 1 案例1&#xff1a;构建MySQL服务器 1.1 问题 在IP地址192.168.88.50主机和192.168.88.51主机上部署mysql服务练习必备命令的使用 …

实习笔记(一)

自定义注解&#xff1a; 自定义注解中有三个元注解Target,Retention,Document /*** 系统日志注解** author Mark sunlightcsgmail.com*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface SysLog {String value() default "…

Qt 之 QPushButton,信号与槽机制

文章目录 前言一、QPushButton二、信号与槽机制总结 前言 一、QPushButton 当我们开发基于Qt框架的图形用户界面&#xff08;GUI&#xff09;应用程序时&#xff0c;经常需要在界面上添加按钮来实现用户交互。Qt提供了一个名为 QPushButton 的类作为按钮控件的实现。QPushButt…

ML-fairness-gym入门教学

1、ML-fairness-gym简介 ML-fairness-gym是一个探索机器学习系统长期影响的工具。可以用于评估机器学习系统的公平性和评估静态数据集上针对各种输入的误差度量的差异。开源网站&#xff1a;GitHub - google/ml-fairness-gym 2、安装ML-fairness-gym&#xff08;Windows&…

强训第32

选择 D B A A 发送TCP意思应该是已经建立了连接&#xff0c;会超时重传。在未建立连接的时候&#xff0c;会放弃该链接 C A 80端口是http A 交换机攻击主要有五种&#xff1a;VLAN跳跃攻击 生成树攻击 MAC表洪水攻击 ARP攻击 VTP攻击 B A 2^(32-26)2^(32-27)2^(32-27)128 减去…

Linux交叉编译opencv并移植ARM端

Linux交叉编译opencv并移植ARM端 - 知乎 一、安装交叉编译器 目标平台为arm7l&#xff0c;此为32位ARM架构&#xff0c;要安装合适的编译器 sudo apt install arm-linux-gnueabihf-gcc sudo apt install arm-linux-gnueabihf-g注意&#xff1a;64位ARM架构的编译器与32位ARM架…

安装docker和案例复现

安装环境 1.安装docker #输入命令 yum install -y yum-utils 安装下载docker的工具包 yum install -y yum-utils # 设置阿里docker镜像仓库地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce d…

栈存储结构详解

目录 栈存储结构详解 进栈和出栈 栈的具体实现 栈的应用 什么是队列&#xff08;队列存储结构&#xff09; 栈存储结构详解 同顺序表和链表一样&#xff0c;栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构&#xff0c;如图 1 所示。 图 1 栈存储结构示意…

领航优配:EFT交易是什么意思?

EFT买卖是一种电子资金搬运买卖方法&#xff0c;EFT代表电子资金搬运&#xff0c;将现金从一个银行账户搬运到另一个银行账户。尽管这种买卖方法已经存在了几十年&#xff0c;但随着技能的开展&#xff0c;越来越多的人开始使用它。 从技能视点&#xff0c;EFT买卖是经过计算机…

Docker容器与虚拟化技术:Docker资源控制、数据管理

目录 一、理论 1.资源控制 2.Docker数据管理 二、实验 1.Docker资源控制 2.Docker数据管理 三、问题 1.docker容器故障导致大量日志集满&#xff0c;造成磁盘空间满 2、当日志占满之后如何处理 四、总结 一、理论 1.资源控制 (1) CPU 资源控制 cgroups&#xff0…

高等数学教材重难点题型总结(二)导数与微分

本章重点题目较少&#xff0c;除了*标题页没什么特别难的&#xff0c;本帖出于总结性的角度考虑并未囊概全部的*标&#xff0c;最后会出一期*标题的全部内容整理&#xff0c;在攻克重难点的基础上更上一层楼。 1.根据定义求某点处的导数值 2.通过定义证明导数 3.左右导数的相关…

Flutter系列文章-Flutter UI进阶

在本篇文章中&#xff0c;我们将深入学习 Flutter UI 的进阶技巧&#xff0c;涵盖了布局原理、动画实现、自定义绘图和效果、以及 Material 和 Cupertino 组件库的使用。通过实例演示&#xff0c;你将更加了解如何创建复杂、令人印象深刻的用户界面。 第一部分&#xff1a;深入…

R语言实现免疫浸润分析(2)

原始数据承接免疫浸润分析&#xff08;1&#xff09;&#xff0c;下面展示免疫浸润结果&#xff1a; #直接使用IOBR包内的cell_bar_plot pic<-cell_bar_plot(input quantiseq_immo_de[1:20,], title "quanTiseq Cell Fraction") #使用ggplot2 library(ggplot2)…

NestJs 中使用 mongoose

在 NestJS 中链接 MongoDB 有两种方法。一种方法就是使用TypeORM来进行连接&#xff0c;另外一种方法就是使用Mongoose。 此笔记主要是记录使用Mongoose的。所以我们先安装所需的依赖&#xff1a; npm i nestjs/mongoose mongoose安装完成后&#xff0c;需要在AppModule中引入…

MySQL 根据多字段查询重复数据

MySQL 根据多字段查询重复数据 在实际的数据库应用中&#xff0c;我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能&#xff0c;让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据&#xff0c;并提供…

利用OpenCV光流算法实现视频特征点跟踪

光流简介 光流&#xff08;optical flow&#xff09;是运动物体在观察成像平面上的像素运动的瞬时速度。光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xff0c;从而计算出相邻帧之间物体的运动信息的一种方法。…