部署LNP+Redis、创建Redis集群、连接集群、集群工作原理

这篇具有很好参考价值的文章主要介绍了部署LNP+Redis、创建Redis集群、连接集群、集群工作原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用命令的使用

64

配置64本机的nginx网站服务可以把数据存储在本机的内存里

在64运行nginx服务,并配置可以解析php脚本

在64主机运行redis服务,并允许在127地址连接服务

[root@redis64 ~]# yum -y install redis    # 安装软件
[root@redis64 ~]# systemctl start redis    # 启动服务
[root@redis64 ~]# netstat -utnlp | grep redis-server    # 查看端口
tcp        0      0 127.0.0.1:6379    0.0.0.0:*    LISTEN      1970/redis-server 1
[root@redis64 ~]# redis-cli    # 连接服务
127.0.0.1:6379> ping    # 检查能否正在访问
PONG 
127.0.0.1:6379> set test aaa    # 存储变量
OK
127.0.0.1:6379> get test    # 查看变量
"aaa"
127.0.0.1:6379> exit    # 断开连接
[root@redis64 ~]#

修改服务运行参数

[root@redis64 ~]# systemctl stop redis
[root@redis64 ~]# vim /etc/redis.conf
bind 192.168.88.64
port 6364
requirepass 123456
[root@redis64 ~]# setenforce 0
[root@redis64 ~]# systemctl start redis
[root@redis64 ~]# netstat  -utnlp  | grep redis-server
tcp   0    0 192.168.88.64:6364   0.0.0.0:*    LISTEN      2009/redis-server 1 
[root@redis64 ~]#
[root@redis64 ~]# redis-cli  -h 192.168.88.64 -p 6364 连接服务
192.168.88.64:6364> ping 不输入密码无法正常访问
(error) NOAUTH Authentication required.
192.168.88.64:6364> auth 123456  输入密码
OK
192.168.88.64:6364> keys *  查看存储的变量
1) "test"
192.168.88.64:6364> exit  断开连接
[root@redis64 ~]#

部署LNP + Redis

配置nginx网站的php脚本可以连接redis服务 存储数据

在64部署LNP环境

安装源码nginx及php

[root@redis64 ~]# yum  -y  install gcc make pcre-devel zlib-devel    # 安装依赖
[root@redis64 ~]# tar -xf nginx-1.22.1.tar.gz    # 解压源码
[root@redis64 ~]# cd nginx-1.22.1    # 进源码目录
[root@redis64 ~]# ./configure    # 配置
[root@redis64 ~]# make    # 编译
[root@redis64 ~]# make install    # 安装
[root@redis64 ~]# ls /usr/local/nginx/    # 查看安装目录
conf  html  logs  sbin
[root@redis64 ~]# yum -y install php php-fpm php-devel    # 安装 php 软件

配置动静分离

[root@redis64 ~]# vim +65 /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

启动nginx服务

[root@redis64 ~]# /usr/local/nginx/sbin/nginx -t    # 测试配置
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@redis64 ~]# /usr/local/nginx/sbin/nginx     # 启动服务
[root@redis64 ~]# netstat -utnlp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10469/nginx: master 

启动php-fpm服务

[root@redis64 ~]# vim /etc/php-fpm.d/www.conf
38 ;listen = /run/php-fpm/www.sock
39 listen = 127.0.0.1:9000
[root@redis64 ~]# systemctl  start php-fpm    # 启动服务
[root@redis64 ~]# netstat -utnlp | grep 9000    # 查看端口
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      10477/php-fpm: mast 
[root@redis64 ~]#

测试配置

[root@redis64 ~]# cat /usr/local/nginx/html/test.php    # 编写php脚本    
<?php
$i = 100 ;
echo $i ;
echo "\n" ;
?>
[root@redis64 ~]# curl  http://localhost/test.php    # 访问php脚本
100

配置PHP支持redis

安装提供redis模块的软件

[root@redis64 ~]# tar -xf redis-cluster-4.3.0.tgz 
[root@redis64 ~]# ls
package.xml  redis-4.3.0  redis-cluster-4.3.0.tgz
[root@redis64 ~]# cd redis-4.3.0/
[root@redis64 redis-4.3.0]# ls
arrays.markdown    config.m4   INSTALL.markdown  README.markdown     redis.c           redis_session.c
cluster_library.c  config.w32  liblzf            redis_array.c       redis_cluster.c   redis_session.h
cluster_library.h  COPYING     library.c         redis_array.h       redis_cluster.h   tests
cluster.markdown   crc16.h     library.h         redis_array_impl.c  redis_commands.c
common.h           CREDITS     php_redis.h       redis_array_impl.h  redis_commands.h
[root@redis64 redis-4.3.0]# phpize    # 获取php版本信息 
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@redis64 redis-4.3.0]# ls
acinclude.m4       common.h      COPYING           ltmain.sh        redis_array_impl.c  redis_session.h
aclocal.m4         config.guess  crc16.h           Makefile.global  redis_array_impl.h  run-tests.php
arrays.markdown    config.h.in   CREDITS           missing          redis.c             tests
autom4te.cache     config.m4     INSTALL.markdown  mkinstalldirs    redis_cluster.c
build              config.sub    install-sh        php_redis.h      redis_cluster.h
cluster_library.c  configure     liblzf            README.markdown  redis_commands.c
cluster_library.h  configure.ac  library.c         redis_array.c    redis_commands.h
cluster.markdown   config.w32    library.h         redis_array.h    redis_session.c
[root@redis64 redis-4.3.0]# ls /usr/bin/php
php         php-cgi     php-config  phpize      
[root@redis64 redis-4.3.0]# ls /usr/bin/php-config 
/usr/bin/php-config
[root@redis64 redis-4.3.0]# cat /usr/bin/php-config
[root@redis64 redis-4.3.0]# ./configure --help | grep php
  --with-php-config=PATH  Path to php-config php-config
[root@redis64 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/
[root@redis64 redis-4.3.0]# ls /usr/lib64/php/modules/
bz2.so       ctype.so  exif.so      ftp.so      iconv.so  redis.so    tokenizer.so
calendar.so  curl.so   fileinfo.so  gettext.so  phar.so   sockets.so
[root@redis64 redis-4.3.0]# php -m | grep -i redis

调用模块

编写php脚本 连接redis服务存储数据

存储数据脚本 s.php

查看数据脚本 g.php

[root@redis64 ~]# tar -xf redis-cluster-4.3.0.tgz 
[root@redis64 ~]# ls
package.xml  redis-4.3.0  redis-cluster-4.3.0.tgz
[root@redis64 ~]# cd redis-4.3.0/
[root@redis64 redis-4.3.0]# ls
arrays.markdown    config.m4   INSTALL.markdown  README.markdown     redis.c           redis_session.c
cluster_library.c  config.w32  liblzf            redis_array.c       redis_cluster.c   redis_session.h
cluster_library.h  COPYING     library.c         redis_array.h       redis_cluster.h   tests
cluster.markdown   crc16.h     library.h         redis_array_impl.c  redis_commands.c
common.h           CREDITS     php_redis.h       redis_array_impl.h  redis_commands.h
[root@redis64 redis-4.3.0]# phpize    # 获取php版本信息
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@redis64 redis-4.3.0]# ls
acinclude.m4       common.h      COPYING           ltmain.sh        redis_array_impl.c  redis_session.h
aclocal.m4         config.guess  crc16.h           Makefile.global  redis_array_impl.h  run-tests.php
arrays.markdown    config.h.in   CREDITS           missing          redis.c             tests
autom4te.cache     config.m4     INSTALL.markdown  mkinstalldirs    redis_cluster.c
build              config.sub    install-sh        php_redis.h      redis_cluster.h
cluster_library.c  configure     liblzf            README.markdown  redis_commands.c
cluster_library.h  configure.ac  library.c         redis_array.c    redis_commands.h
cluster.markdown   config.w32    library.h         redis_array.h    redis_session.c
[root@redis64 redis-4.3.0]# ls /usr/bin/php
php         php-cgi     php-config  phpize      
[root@redis64 redis-4.3.0]# ls /usr/bin/php-config 
/usr/bin/php-config
[root@redis64 redis-4.3.0]# cat /usr/bin/php-config
[root@redis64 redis-4.3.0]# ./configure --help | grep php
  --with-php-config=PATH  Path to php-config php-config
[root@redis64 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/
[root@redis64 redis-4.3.0]# ls /usr/lib64/php/modules/
bz2.so       ctype.so  exif.so      ftp.so      iconv.so  redis.so    tokenizer.so
calendar.so  curl.so   fileinfo.so  gettext.so  phar.so   sockets.so
[root@redis64 redis-4.3.0]# php -m | grep -i redis
[root@redis64 redis-4.3.0]# vim /etc/php.ini 
[root@redis64 redis-4.3.0]# php -m | grep -i redis
redis
[root@redis64 redis-4.3.0]# systemctl restart php-fpm.service 
[root@redis64 redis-4.3.0]# vim /usr/local/nginx/html/s.php
<?php
$redis = new redis();
$redis->connect("127.0.0.1", "6364");
$redis->auth("123456");
$redis->set("class","nsd2310");
echo "save ok\n";
?>

[root@redis64 redis-4.3.0]# redis-cli -h 127.0.0.1 -p 6364 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6364> keys *
(empty list or set)
127.0.0.1:6364> exit
[root@redis64 redis-4.3.0]# curl http://localhost/s.php
save ok
[root@redis64 redis-4.3.0]# cat /usr/local/nginx/html/test.php 
<?php
$i = 100 ;
echo $i ;
echo "\n" ;
?>
[root@redis64 redis-4.3.0]# redis-cli -h 127.0.0.1 -p 6364 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6364> keys *
1) "class"
127.0.0.1:6364> get class
"nsd2310"
127.0.0.1:6364> 
127.0.0.1:6364> exit
[root@redis64 redis-4.3.0]# vim /usr/local/nginx/html/g.php
[root@redis64 redis-4.3.0]# curl http://localhost/g.php
[root@redis64 redis-4.3.0]# cat /usr/local/nginx/html/g.php
<?php
$redis = new redis();
$redis->connect("127.0.0.1", "6364");
$redis->auth("123456");
echo $redis->get("class");
echo "\n";
?>


[root@redis64 redis-4.3.0]# vim /usr/local/nginx/html/g.php
[root@redis64 redis-4.3.0]# curl http://localhost/g.php
nsd2310
[root@redis64 redis-4.3.0]# redis-cli -h 127.0.0.1 -p 6364 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6364> set class nsd2311
OK
127.0.0.1:6364> exit
[root@redis64 redis-4.3.0]# curl http://localhost/g.php
nsd2311
[root@redis64 redis-4.3.0]

部署redis集群 给网站提供数据存储服务,解决如下问题

redis服务单点故障

数据的自动备份

数据存储的速度和存储不足的问题

准备6台redis服务器做集群

51 52 53 54 55 56

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

创建集群

在 51~56 任意一台服务器上执行创建集群的命令都可以

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

创建集群时,会自动创建主从角色,默认把主机列表中的前3台服务器创建为Master角色的redis服务器,剩下的均配置为slave角色服务器

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

查看命令帮助

[root@Host51 ~]# redis-cli --cluster help

创建集群

[root@Host51 ~]# 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
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.88.54:6379 to 192.168.88.51:6379
Adding replica 192.168.88.55:6379 to 192.168.88.52:6379
Adding replica 192.168.88.56:6379 to 192.168.88.53:6379
M: 0ceaf74c80061a9cf8075ebae1361ae579f113bd 192.168.88.51:6379
   slots:[0-5460] (5461 slots) master
M: beedff7f08f050499112d7b032ebdcc991dcaeab 192.168.88.52:6379
   slots:[5461-10922] (5462 slots) master
M: 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 192.168.88.53:6379
   slots:[10923-16383] (5461 slots) master
S: 0e2e8ea308d98961c6277dd772d3fce9730333ca 192.168.88.54:6379
   replicates 0ceaf74c80061a9cf8075ebae1361ae579f113bd
S: f6ac666e65d328b1950cd7665a6dc64aadf5c3ac 192.168.88.55:6379
   replicates beedff7f08f050499112d7b032ebdcc991dcaeab
S: 91d50cfc022f607ef11944e406028ba7cfba459c 192.168.88.56:6379
   replicates 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 192.168.88.51:6379)
M: 0ceaf74c80061a9cf8075ebae1361ae579f113bd 192.168.88.51:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 192.168.88.53:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 91d50cfc022f607ef11944e406028ba7cfba459c 192.168.88.56:6379
   slots: (0 slots) slave
   replicates 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07
S: 0e2e8ea308d98961c6277dd772d3fce9730333ca 192.168.88.54:6379
   slots: (0 slots) slave
   replicates 0ceaf74c80061a9cf8075ebae1361ae579f113bd
M: beedff7f08f050499112d7b032ebdcc991dcaeab 192.168.88.52:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: f6ac666e65d328b1950cd7665a6dc64aadf5c3ac 192.168.88.55:6379
   slots: (0 slots) slave
   replicates beedff7f08f050499112d7b032ebdcc991dcaeab
[OK] All nodes agree about slots configuration.
>>> Check for open slots...                                                                               
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看统计信息

[root@Host51 ~]# redis-cli --cluster info 192.168.88.52:6379
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.53:6379 (0b2841b7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.        

查看详细信息

[root@Host51 ~]# redis-cli --cluster check 192.168.88.52:6379
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.53:6379 (0b2841b7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.                                                                            
>>> Performing Cluster Check (using node 192.168.88.52:6379)
M: beedff7f08f050499112d7b032ebdcc991dcaeab 192.168.88.52:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 192.168.88.53:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 0e2e8ea308d98961c6277dd772d3fce9730333ca 192.168.88.54:6379
   slots: (0 slots) slave
   replicates 0ceaf74c80061a9cf8075ebae1361ae579f113bd
S: 91d50cfc022f607ef11944e406028ba7cfba459c 192.168.88.56:6379
   slots: (0 slots) slave
   replicates 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07
S: f6ac666e65d328b1950cd7665a6dc64aadf5c3ac 192.168.88.55:6379
   slots: (0 slots) slave
   replicates beedff7f08f050499112d7b032ebdcc991dcaeab
M: 0ceaf74c80061a9cf8075ebae1361ae579f113bd 192.168.88.51:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...                                                                               
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看保存集群信息

[root@Host51 ~]# cat /var/lib/redis/nodes-6379.conf 
0ceaf74c80061a9cf8075ebae1361ae579f113bd 192.168.88.51:6379@16379 myself,master - 0 1705887242000 1 connected 0-5460
0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 192.168.88.53:6379@16379 master - 0 1705887242000 3 connected 10923-16383
91d50cfc022f607ef11944e406028ba7cfba459c 192.168.88.56:6379@16379 slave 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 0 1705887242129 6 connected
0e2e8ea308d98961c6277dd772d3fce9730333ca 192.168.88.54:6379@16379 slave 0ceaf74c80061a9cf8075ebae1361ae579f113bd 0 1705887242630 4 connected
beedff7f08f050499112d7b032ebdcc991dcaeab 192.168.88.52:6379@16379 master - 0 1705887241528 2 connected 5461-10922
f6ac666e65d328b1950cd7665a6dc64aadf5c3ac 192.168.88.55:6379@16379 slave beedff7f08f050499112d7b032ebdcc991dcaeab 0 1705887241628 5 connected
vars currentEpoch 6 lastVoteEpoch 0

使用数据库命令查看集群信息

[root@Host51 ~]# redis-cli -h 192.168.88.52
192.168.88.52:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:2
cluster_stats_messages_ping_sent:1158
cluster_stats_messages_pong_sent:1162
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:2325
cluster_stats_messages_ping_received:1162
cluster_stats_messages_pong_received:1163
cluster_stats_messages_received:2325
192.168.88.52:6379> 

测试集群

解决redis服务单点故障

master角色的主机宕机后对应的slave会自动升级为master

master角色的主机恢复后会自动做slave角色的主机

[root@Host51 ~]# redis-cli --cluster info 192.168.88.52:6379
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.53:6379 (0b2841b7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

[root@Host53 ~]# systemctl stop redis
[root@Host53 ~]# ss -ntulp | grep redis-server
[root@Host53 ~]# 

[root@Host51 ~]# redis-cli --cluster info 192.168.88.52:6379
Could not connect to Redis at 192.168.88.53:6379: Connection refused
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.56:6379 (91d50cfc...) -> 0 keys | 5461 slots | 0 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

[root@Host53 ~]# systemctl start redis
[root@Host53 ~]# ss -ntulp | grep redis-server
tcp   LISTEN 0      128    192.168.88.53:16379      0.0.0.0:*    users:(("redis-server",pid=818,fd=8))
tcp   LISTEN 0      128    192.168.88.53:6379       0.0.0.0:*    users:(("redis-server",pid=818,fd=6))

[root@Host51 ~]# redis-cli --cluster info 192.168.88.52:6379
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.56:6379 (91d50cfc...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@Host51 ~]# redis-cli --cluster check 192.168.88.52:6379
192.168.88.52:6379 (beedff7f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.88.56:6379 (91d50cfc...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0ceaf74c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.88.52:6379)
M: beedff7f08f050499112d7b032ebdcc991dcaeab 192.168.88.52:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 0b2841b7fdb173b3f74bf5a75d01ef31ae451e07 192.168.88.53:6379
   slots: (0 slots) slave
   replicates 91d50cfc022f607ef11944e406028ba7cfba459c
S: 0e2e8ea308d98961c6277dd772d3fce9730333ca 192.168.88.54:6379
   slots: (0 slots) slave
   replicates 0ceaf74c80061a9cf8075ebae1361ae579f113bd
M: 91d50cfc022f607ef11944e406028ba7cfba459c 192.168.88.56:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: f6ac666e65d328b1950cd7665a6dc64aadf5c3ac 192.168.88.55:6379
   slots: (0 slots) slave
   replicates beedff7f08f050499112d7b032ebdcc991dcaeab
M: 0ceaf74c80061a9cf8075ebae1361ae579f113bd 192.168.88.51:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...                                                                               
>>> Check slots coverage...
[OK] All 16384 slots covered.

数据的自动备份

slave角色主机自动同步master角色主机数据

数据分布式存储

连接集群 存储的多个变量 不是存储在一台redis服务里 而是根据集群crc16 算法的计算结果存储数据 根据算法的计算结果把数据分别存储在集群的master角色主机上 

连接集群的命令

redis-cli -c -h 51~56的ip -p 6379

集群存储数据的工作过程

根据算法的计算结果把数据分别存储在集群的master角色主机上

编写php脚本 连接集群

存储数据

[root@redis64 ~]# ss -ntulp | grep 80
[root@redis64 ~]# ss -ntulp | grep 9000
[root@redis64 ~]# php -m | grep -i redis
[root@redis64 ~]# vim /usr/local/nginx/html/s1.php
<?php
$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'];
$client = new RedisCluster(NUll,$redis_list);
$client->set("i","tarenaA ");
$client->set("j","tarenaB ");
$client->set("k","tarenaC ");
echo "save ok\n";
?>

查询数据

[root@redis64 ~]# cp /usr/local/nginx/html/s1.php /usr/local/nginx/html/g1.php
[root@redis64 ~]# vim /usr/local/nginx/html/g1.php
<?php
$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'];
$client = new RedisCluster(NUll,$redis_list);
echo $client->get("i");
echo $client->get("j");
echo $client->get("k");
?>
[root@redis64 ~]# curl http://localhost/s1.php
save ok
[root@redis64 ~]# curl http://localhost/g1.php
tarenaA tarenaB tarenaC [root@redis64 ~]# 

连接redis集群主机查看存储的数据文章来源地址https://www.toymoban.com/news/detail-818632.html

[root@Host51 ~]# redis-cli --cluster info 192.168.88.51:6379
192.168.88.51:6379 (0ceaf74c...) -> 2 keys | 5461 slots | 1 slaves.
192.168.88.56:6379 (91d50cfc...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (beedff7f...) -> 2 keys | 5462 slots | 1 slaves.
[OK] 5 keys in 3 masters.
0.00 keys per slot on average.
[root@Host51 ~]# redis-cli -c -h 192.168.88.51 -p 6379
192.168.88.51:6379> keys *
1) "age"
2) "j"
192.168.88.51:6379> get j
"tarenaB "
192.168.88.51:6379> 
[root@Host51 ~]# redis-cli -c -h 192.168.88.52 -p 6379
192.168.88.52:6379> keys *
1) "name"
2) "k"
192.168.88.52:6379> get k
"tarenaC "
192.168.88.52:6379> 
[root@Host51 ~]# redis-cli -c -h 192.168.88.56 -p 6379
192.168.88.56:6379> keys *
1) "i"
192.168.88.56:6379> get i
"tarenaA "
192.168.88.56:6379> 

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

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

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

相关文章

  • 网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用

    目录 day02 深入理解程序的数据存储 验证 配置NFS服务器 配置代理服务器 配置名称解析 程序将文字数据保存到数据库中 程序将非文字数据(如图片、视频、压缩包等)保存到相应的文件目录中 验证 发一篇文章,文章内容包含文字和图片 在数据库中查看文字数据。在最新的一

    2024年02月20日
    浏览(32)
  • mongodb集群工作原理学习

    MongoDB集群有好几种方式:,主从模式,副本集模式和分片的模式 其中主从模式基本不再使用,大多是后面两种 副本集模式主要是用于实现服务的高可用性,类型Redis的哨兵模式. 它主要是的特点: 创建集群后会有主节点(primary)和从节点(secondary). 但从节点可以进行相应设置具有不同的

    2024年02月13日
    浏览(30)
  • Yarn 集群的架构和工作原理

    Yarn 的基本设计思想是将 MapReduce V1 中的 JobTracker 拆分为两个独立的服务:ResourceManager 和 ApplicationMaster。 ResourceManager 负责整个系统的资源管理和分配,ApplicationMaster 负责单个应用程序的管理。 ResourceManager RM 是一个全局的资源管理器,负责整个系统的资源管理和分配,它主要

    2024年02月16日
    浏览(29)
  • 【redis】创建集群

    这里介绍的是创建redis集群的方式,一种是通过create-cluster配置文件创建部署在一个物理机上的伪集群,一种是先在不同物理机启动单体redis,然后通过命令行使这些redis加入集群的方式。 进入redis源码目录,进入utils目录,展示如下: 里面有一个create-cluster目录,进入这个目录

    2024年02月14日
    浏览(20)
  • Redis Sentinel工作原理

    Redis Sentinel是Redis的高可用性解决方案。它主要用来监控Redis master和slave服务器的运行状态,并在master宕机时自动进行故障转移,即从slave节点中选举出新的master节点,并让其余的slave节点指向新的master节点。 Redis Sentinel工作原理: 监控 :Sentinel 不断地检查你的master和slave服务

    2024年02月20日
    浏览(31)
  • Zookeeper 和 Kafka 工作原理及如何搭建 Zookeeper集群 + Kafka集群

    目录 1 Zookeeper 1.1 Zookeeper 定义 1.2 Zookeeper 工作机制 1.3 Zookeeper 特点 1.4 Zookeeper 数据结构 1.5 Zookeeper 应用场景 1.6 Zookeeper 选举机制 2 部署 Zookeeper 集群 2.1 安装前准备 2.2 安装 Zookeeper 3 Kafka 3.1 为什么需要消息队列(MQ) 3.2 使用消息队列的好处 3.3 消息队列的两种模式 3.4 Kafka 定义

    2024年02月08日
    浏览(32)
  • HTTPS建立连接原理、SSL工作原理

    HTTPS与HTTP相比有什么区别? HTTPS保证安全的原理是什么? HTTPS是如何建立连接的? 巨人的肩膀 3.1 HTTP 常见面试题 | 小林coding HTTP是超文本传输协议,传输的内容是明文(HTTP1.1及之前版本)。HTTPS在TCP与HTTP层之间引入SSL/TLS安全协议,传输的报文都是加密传输的 HTTP建立连接简单,

    2024年02月02日
    浏览(75)
  • Redis分片集群搭建及其原理

    主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 海量数据存储问题 高并发写的问题 使用分片集群可以解决上述问题,如图: 分片集群特征: 集群中有多个master,每个master保存不同数据 每个master都可以有多个slave节点 master之间通过ping监测彼此

    2024年02月05日
    浏览(28)
  • 【Redis】Redis是什么、能干什么、主要功能和工作原理的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月11日
    浏览(28)
  • 2 - 部署Redis集群架构

    环境: 6台集群服务器 51-56 : 安装Redis软件 初始化配置 停止Redis服务 修改服务使用的ip地址是eth0接口的地址(不需要设置密码和修改服务使用的端口号) 启动Redis服务 第一步 准备ruby脚本的运行环境 第二步 创建脚本 第三步 查看脚本帮助信息 重要说明:内存里不允许有数据

    2024年01月23日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包