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

这篇具有很好参考价值的文章主要介绍了概述、搭建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所示。

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

 

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所示。

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

 

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集群主机查看数据文章来源地址https://www.toymoban.com/news/detail-658112.html

 
  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"

到了这里,关于概述、搭建Redis服务器、部署LNP+Redis、创建Redis集群、连接集群、集群工作原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建redis服务器

    memcached  MongoDB   Redis 先把数据存储在内存里,如何定期把内存里数据存储在硬盘,一个Key一个Values redis集群存储数据在内存里面 mysql集群存储数据在硬盘里 netstat -utnlp | grep redis-server 查看端口 tcp 0 0 127.0.0.1: 6379 0.0.0.0:* LISTEN 1970/redis-server 1 默认只能自己访问 keys * 查看存储的变

    2024年01月23日
    浏览(38)
  • 一台服务器上部署 Redis 伪集群

    哈喽大家好,我是咸鱼 今天这篇文章介绍如何在一台服务器(以 CentOS 7.9 为例)上通过 redis-trib.rb 工具搭建 Redis cluster (三主三从) redis-trib.rb 是一个基于 Ruby 编写的脚本,其功能涵盖了创建、管理以及维护 Redis 集群的各个方面 值得注意的是,随着时间的推移,一些较新版

    2024年02月11日
    浏览(76)
  • 从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构

    由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习方向,有什么错误的地方欢迎各位同行进行讨论。 本篇教程预计使用Java+Redis+Mongo 本着先完成再完美的原则,从最简单的

    2024年02月10日
    浏览(54)
  • 云服务器上使用Docker Compose创建Redis三主三从集群

    云服务器 Ubuntu20.4 Dokcer 24.0.2 目录结构是这样: 绿色的目录是用来存储容器中的文件,不需要我们手动创建,将路径配置在配置文件中即可。黑色的目录和文件需要自己手动创建。  我们一共创建7个容器: redis1~redis6是集群节点,redis_cluster是用来搭建主从关系的一个容器,搭

    2024年02月09日
    浏览(77)
  • JAVA-服务器搭建-创建web后端项目

       

    2024年04月22日
    浏览(70)
  • Redis持久化说明及其单台Linux服务器搭建Redis集群架构

    说明:RDB快照主要以二进制文件的形式进行存储数据,主要以文件名dump.rdb进行存储,主要设置redis.conf里面设置’save 60 1000’命令可以开启, 表示在60秒内操作1000次进行一次备份数据。在客户端执行save(同步)和bgsave(异步操作)。 redis.conf 启动redis相关命令 说明:主要把文件生

    2024年02月10日
    浏览(55)
  • 【免费外国云服务器】亚马逊AWS创建EC2实例搭建个人服务器

    作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。 荣誉: 阿里云博客专家认证 、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。 跨领域学习 ,喜欢摄影、弹吉他、咏春拳。 文章深入浅出、语

    2024年02月04日
    浏览(55)
  • 部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

    推荐的做法:买一个云服务器。(主要是要有一个外网 IP) 好处:① 方便 (如果自己搭建,就比较麻烦)、② 便宜 (如果只是为了学习使用,最低配置的服务器完全够用,不到 50 元就能买一年使用权)、③ 有外网 IP ,可以部署项目(有了外网 IP,我们部署的项目,别人

    2024年02月11日
    浏览(64)
  • 教你幻兽帕鲁搭建服务器 还不会创建幻兽帕鲁服务器的看看

     目前幻兽帕鲁游戏想要联机需要有服务器的支持,部分小伙伴可能不清楚该如何搭建服务器,这里小编给大家整理了详细的操作方法。 阿里云提供快速、简化的服务器搭建方案,新手小白0基础1分钟搞定幻兽帕鲁游戏联机服务器搭建! 本文将为大家详细介绍如何在阿里云上

    2024年02月21日
    浏览(43)
  • 麒麟KYLINIOS软件仓库搭建01-新创建软件仓库服务器

    原文链接:麒麟KYLINIOS软件仓库搭建01-新创建软件仓库服务器 hello,大家好啊,今天给大家带来麒麟桌面操作系统软件仓库搭建的文章01-新创建软件仓库服务器,本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版本上搭建内网软件仓库源,本系列共有三个内容,欢迎

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包