概述、搭建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.pswp.cn/news/43374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【問題整理】Ubuntu 執行 apt-get install xxx 報錯

Ubuntu 執行 apt-get install xxx 報錯 一、問題描述: 執行apt-get install fcitx時&#xff0c;報如下錯誤 grub-pc E: Sub-process /usr/bin/dpkg returned an error code (1)二、解決方法: 嘗試修復依賴問題&#xff1a; sudo apt-get -f install這個命令會嘗試修復系統…

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廣告組件被駁回你的廣告正在被審核,無法展現廣告后來找到幾個類似的帖子…

arm開發板 GDB遠程調試方法

1.前言 1.在linux下開發&#xff0c;免不了使用gdb調試&#xff0c;但是linux下開發嵌入式&#xff0c;都是跑在ARM板子上的&#xff0c;網上有很多GDB的基礎教程&#xff0c;但是能在ARM開發板用的時候&#xff0c;會有各種問題。 比如&#xff1a;*.cpp: No such file or di…

Android su

1. userdebug和user版本 2. 關閉selinux system/core diff --git a/init/selinux.cpp b/init/selinux.cpp index 5a0255acd..787917274 100644--- a/init/selinux.cpp b/init/selinux.cpp -104,6 104,8 EnforcingStatus StatusFromCmdline() { } bool IsEnforcing() { …

元宇宙時代超高清視音頻技術白皮書關于流媒體協議和媒體傳輸解讀

流媒體協議 元宇宙業務場景對流媒體傳輸的實時性和互動性提出了更高的要求&#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;我們想要將求和號也加進去&#…

Jenkins的流水線啟動jar后未執行問題處理

現象 在流水線里配置了啟動腳本例如&#xff0c;nohup java -jar xxx.jar >nohup.out 2>&1 & 但是在服務器發現服務并未啟動,且nohup日志里沒輸出日志,這樣的原因是jenkins在執行完腳本后&#xff0c;就退出了這個進程。 在啟動腳本執行jar命令的上一步加入以下…

【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文件代碼內容&…