• Redis群集


    目录

    关系数据库与非关系型数据库

    ★★Redis简介

    ★★Redis安装部署

    ★★Redis配置参数

    ★★Redis命令工具

    redis-cli命令行工具

    redis-benchmark测试工具

    ★★Redis常用命令

    key相关命令

    多数据库常用命令

    ★★Redis群集

    Redis群集部署

    1. 安装Redis并修改配置文件

    2. 使用脚本创建群集

    3. 查看群集状态

    4. 测试群集


    关系数据库与非关系型数据库

    • 关系型数据库

    一个结构化的数据库,创建在关系模型基础上,一般面向于记录

    包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等

    • 非关系型数据库

    除了主流的关系型数据库以外的数据库,都认为是非关系型的

    包括Redis、MongBD、Hbase、CouhDB等

    • 非关系型数据库产生背景

    High performance——对数据库高并发读写需求

    Huge Storage——对海量数据高效存储与访问需求

    High Scalability && High Availability——对数据库高可扩展性与高可用性需求

    Redis简介

            Redis是一个开源的、使用C语言编写、支持网络、可基于内存亦可支持持久化的日志型、key-value(键值对)数据库,是目前分布式结构中不可或缺的一环。

    Redis的优点

    1. 具有极高的数据读写速度,读取数据的速度最高可达到110000次/s,数据写入速度最高可达到81000次/s。

    2. 支持丰富的数据类型,不仅仅支持简单的key-value数据类型,还支持Strings、Lists、Hashes、Sets及Ordered Sets等数据类型操作。

    3. 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    4. 原子性,Redis所有操作都是原子性的。

    5. 支持数据备份,即master-salve模式的数据备份。

    Redis安装部署

    Redis官网Redis

    1. [root@localhost ~]# mount /dev/cdrom /media
    2. mount: /dev/sr0 写保护,将以只读方式挂载
    3. [root@localhost ~]# tar zxf /media/redis-3.2.9.tar.gz -C /usr/src
    4. [root@localhost ~]# cd /usr/src/redis-3.2.9/
    5. [root@localhost redis-3.2.9]# make && make install

            安装过程中,若要更改默认的安装路径,可以使用以下命令安装操作。

    make PREFIX=安装路径 install

            make install 只是安装了二进制文件到系统中,并没有启动脚本和配置文件。通过使用install_server.sh脚本文件可以设置Redis服务所需要的相关配置文件。当脚本运行完毕,Redis服务就已经启动成功,默认侦听端口为6379。(执行后确认消息按回车下一步)

    1. [root@localhost redis-3.2.9]# cd /usr/src/redis-3.2.9/utils/
    2. [root@localhost utils]# ./install_server.sh
    3. Welcome to the redis service installer
    4. This script will help you easily set up a running redis server
    5. Please select the redis port for this instance: [6379]
    6. Selecting default: 6379
    7. Please select the redis config file name [/etc/redis/6379.conf]
    8. Selected default - /etc/redis/6379.conf
    9. Please select the redis log file name [/var/log/redis_6379.log]
    10. Selected default - /var/log/redis_6379.log
    11. Please select the data directory for this instance [/var/lib/redis/6379]
    12. Selected default - /var/lib/redis/6379
    13. Please select the redis executable path [/usr/local/bin/redis-server]
    14. Selected config:
    15. Port           : 6379
    16. Config file   : /etc/redis/6379.conf //设置默认配置文件
    17. Log file       : /var/log/redis_6379.log //设置日志文件
    18. Data dir       : /var/lib/redis/6379 //设置数据目录
    19. Executable     : /usr/local/bin/redis-server //执行命令
    20. Cli Executable : /usr/local/bin/redis-cli //客户端命令
    21. Is this ok? Then press ENTER to go on or Ctrl-C to abort.
    22. Copied /tmp/6379.conf => /etc/init.d/redis_6379
    23. Installing service...
    24. Successfully added to chkconfig!
    25. Successfully added to runlevels 345!
    26. Starting Redis server...
    27. Installation successful!
    28. [root@localhost utils]# netstat -anpt | grep redis
    29. tcp       0     0 127.0.0.1:6379         0.0.0.0:*               LISTEN     7504redis-server 1

            安装完成后,可通过Redis的服务控制脚本/etc/init.d/redis_6379来对Redis服务进行控制。

    1. [root@localhost ~]# /etc/init.d/redis_6379 stop //关闭服务
    2. Stopping ...
    3. Redis stopped
    4. [root@localhost ~]# /etc/init.d/redis_6379 start //启动服务
    5. Starting Redis server...
    6. [root@localhost ~]# /etc/init.d/redis_6379 restart //重启服务
    7. Stopping ...
    8. Waiting for Redis to shutdown ...
    9. Redis stopped
    10. Starting Redis server...
    11. [root@localhost ~]# /etc/init.d/redis_6379 status //查看运行状态
    12. Redis is running (7581)

    Redis配置参数

            Redis主配置文件为/etc/redis/6379.conf,由注释行与设置行两部分组成。

    1. [root@localhost ~]# vim /etc/redis/6379.conf
    2. bind 127.0.0.1 192.168.1.10 //监听的主机地址(配置时添加本机地址可以远程访问)
    3. port 6379 //端口
    4. daemonize yes //启用守护进程
    5. pidfile /var/run/redis_6379.pid //指定PID文件
    6. loglevel notice //日志级别
    7. logfile /var/log/redis_6379.log //指定日志文件
    8. [root@localhost ~]# /etc/init.d/redis_6379 restart
    9. Stopping ...
    10. Waiting for Redis to shutdown ...
    11. Redis stopped
    12. Starting Redis server...

    Redis命令工具

            Redis软件提供了多个命令工具,当Redis安装时,所包含的软件工具会同时被安装到系统中,在系统中可以直接使用。这些命令工具的作用如下所示。

    1. redis-server:用于启动Redis的工具。

    2. redis-benchmark:用于检测Redis在本机的运行效率。

    3. redis-check-aof:修复AOF持久化文件。

    4. redis-check-rdb:修复RDB持久化文件。

    5. redis-cli:Redis命令行工具。

    6. redis-setinel:redis-server文件的软连链接。

    redis-cli命令行工具

            Redis数据库系统也是一个典型的C/S架构的应用,要访问Redis数据库需要使用专门的客户端软件(redis-cli)。

    1. [root@localhost ~]# redis-cli //连接本机的Redis数据库
    2. 127.0.0.1:6379> ping //检测Redis服务是否启动
    3. PONG
    4. 127.0.0.1:6379>

            在进行数据库连接操作时,可以通过选项来指定远程主机上的Redis数据库,-h指定远程主机、-p指定Redis服务的端口号,-a指定密码,执行exit或quit命令退出原来的Shell环境。

    1. [root@localhost ~]# redis-cli -h 192.168.1.10 -p 6379
    2. 192.168.1.10:6379> info
    3. # Server
    4. redis_version:3.2.9
    5. redis_git_sha1:00000000
    6. redis_git_dirty:0
    7. redis_build_id:44ee4c7b13835271
    8. ......//省略部分内容
    9. 192.168.1.10:6379> exit
    10. [root@localhost ~]#

            在数据库操作环境中,使用help命令可以获取命令类型的帮助。

    1. help @:获取group中的命令列表。
    2. help :获得某个命令的帮助。
    3. help :获取可能帮助的主题列表。

    具体操作如下:

    1. [root@localhost ~]# redis-cli
    2. 127.0.0.1:6379> help @list //查看所有与list数据类型相关的命令
    3. BLPOP key [key ...] timeout
    4. summary: Remove and get the first element in a list, or block until one is available
    5. since: 2.0.0
    6. BRPOP key [key ...] timeout
    7. summary: Remove and get the last element in a list, or block until one is available
    8. since: 2.0.0
    9. ......//省略部分内容
    10. 127.0.0.1:6379> help set //查看set命令的命令帮助
    11. SET key value [EX seconds] [PX milliseconds] [NX|XX]
    12. summary: Set the string value of a key
    13. since: 1.0.0
    14. group: string

    redis-benchmark测试工具

            redis-benchmark是官方自带的redis性能测试工具,可以有效地测试redis服务的性能。基本的测试语法为redis-benchmark [选项] [选项参数]。

    1. -h:指定服务器主机名
    2. -p:指定服务器端口
    3. -s:指定服务器socket
    4. -c:指定并发连接数
    5. -n:指定请求数
    6. -d:以字节(B)的形式指定SET/GET值的数据大小
    7. -k:1=keep alive 0=reconnect
    8. -r:SET/GET/INCR使用随机key,SADD使用随机值
    9. -P(大写):通过管道传输请求
    10. -q:强制退出redis,仅显示query/sec值
    11. --csv:以CSV格式输出
    12. -l:生成循环,永久执行测试
    13. -t:仅运行以逗号分隔的测试命令列表
    •   结合上述选项,可以针对某台redis服务器进行性能检测,例如执行下面命令即可向IP地址为192.168.1.10、端口为6379的Redis服务器发送100隔并发连接与100000个请求测试性能。
    1. [root@localhost ~]# redis-benchmark -h 192.168.1.10 -p 6379 -c 100 -n 10000
    2. ......//省略部分内容
    3. 9775.17 requests per second
    4. ====== MSET (10 keys) ======
    5. 10000 requests completed in 0.14 seconds
    6. 100 parallel clients
    7. 3 bytes payload
    8. keep alive: 1
    9. 87.86% <= 1 milliseconds
    10. 98.75% <= 2 milliseconds
    11. 100.00% <= 3 milliseconds
    12. 74074.07 requests per second
    • 执行下面命令测试存取大小为100B的数据包性能。
    1. [root@localhost ~]# redis-benchmark -h 192.168.1.10 -p 6379 -q -d 100
    2. PING_INLINE: 82850.04 requests per second
    3. PING_BULK: 79744.82 requests per second
    4. SET: 78616.35 requests per second
    5. GET: 78492.93 requests per second
    6. INCR: 80840.74 requests per second
    7. LPUSH: 78003.12 requests per second
    8. RPUSH: 77881.62 requests per second
    9. LPOP: 80000.00 requests per second
    10. RPOP: 79365.08 requests per second
    11. SADD: 79554.50 requests per second
    12. SPOP: 78864.35 requests per second
    13. LPUSH (needed to benchmark LRANGE): 79681.27 requests per second
    14. LRANGE_100 (first 100 elements): 36062.03 requests per second
    15. LRANGE_300 (first 300 elements): 12918.23 requests per second
    16. LRANGE_500 (first 450 elements): 7885.19 requests per second
    17. LRANGE_600 (first 600 elements): 5531.89 requests per second
    18. MSET (10 keys): 77399.38 requests per second

    执行下面命令测试本机上redis服务在进行set与lpush操作时的性能。

    1. [root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q
    2. SET: 85470.09 requests per second
    3. LPUSH: 90826.52 requests per second

    Redis常用命令

    set:存放数据,基本的命令格式为[set 键 值]

    get:获取数据,基本的命令格式为[get 键]

    例如,在当前数据库下存放一个key为666,value为777的数据,执行get 666 命令即可查看刚才存放的数据。

    1. [root@localhost ~]# redis-cli
    2. 127.0.0.1:6379> set 666 777
    3. OK
    4. 127.0.0.1:6379> get 666
    5. "777"

    key相关命令

    • keys

    获取符合规则的键值列表

    1. 127.0.0.1:6379> set k1 1
    2. OK
    3. 127.0.0.1:6379> set k2 2
    4. OK
    5. 127.0.0.1:6379> set k3 3
    6. OK
    7. 127.0.0.1:6379> set v1 4
    8. OK
    9. 127.0.0.1:6379> set v5 5
    10. OK
    11. 127.0.0.1:6379> keys * //查看当前数据库中所有键
    12. 1) "teacher"
    13. 2) "k1"
    14. 3) "k2"
    15. 4) "v1"
    16. 5) "v5"
    17. 6) "k3"
    18. 127.0.0.1:6379> set v22 5
    19. OK
    20. 127.0.0.1:6379> keys v* //查看当前数据库中以v开头的数据
    21. 1) "v22"
    22. 2) "v1"
    23. 3) "v5"
    24. 127.0.0.1:6379> keys v? //查看对当前数据库中以v开头后面包含任意一位的数据
    25. 1) "v1"
    26. 2) "v5"
    27. 127.0.0.1:6379> keys v?? //查看对当前数据库中以v开头后面包含任意两位的数据
    28. 1) "v22"
    • exists

    使用exists命令可以判断键值是否存在

    1. 127.0.0.1:6379> exists teacher //判断teacher键是否存在
    2. (integer) 1 //”1“表示teacher键存在
    3. 127.0.0.1:6379> exists tea
    4. (integer) 0 //表示tea键不存在
    • del

    使用del命令可以删除当前数据库的指定key

    1. 127.0.0.1:6379> keys * //查看所有键
    2. 1) "teacher"
    3. 2) "v22"
    4. 3) "k1"
    5. 4) "k2"
    6. 5) "v1"
    7. 6) "v5"
    8. 7) "k3"
    9. 127.0.0.1:6379> del v5 //删除数据v5
    10. (integer) 1
    11. 127.0.0.1:6379> get v5
    12. (nil)
    • type

    获取key对应的value值类型

    1. 127.0.0.1:6379> type k1
    2. string
    • rename

            对已有的key进行重命名,命令格式为rename 源key 目标key。无论目标key是否存在都会进行重命名,且源key的值会覆盖目标key的值。在实际使用过程中,建议先用exists命令查看key是否存在,再执行命令避免覆盖重要数据。

    1. 127.0.0.1:6379> keys v*
    2. 1) "v22"
    3. 2) "v1"
    4. 127.0.0.1:6379> rename v22 v2
    5. OK
    6. 127.0.0.1:6379> keys v*
    7. 1) "v2"
    8. 2) "v1"
    9. 127.0.0.1:6379> get v1
    10. "4"
    11. 127.0.0.1:6379> get v2
    12. "5"
    13. 127.0.0.1:6379> rename v1 v2
    14. OK
    15. 127.0.0.1:6379> get v1
    16. (nil)
    17. 127.0.0.1:6379> get v2
    18. "4"
    • renamenx

    对已有可以进行重命名,并检测新名是否存在,重命名时,如果目标key存在则不进行重命名。

    1. 127.0.0.1:6379> keys *
    2. 1) "v2"
    3. 2) "teacher"
    4. 3) "k1"
    5. 4) "k2"
    6. 5) "k3"
    7. 127.0.0.1:6379> get teacher
    8. "zhou"
    9. 127.0.0.1:6379> get v2
    10. "4"
    11. 127.0.0.1:6379> renamenx v2 teacher
    12. (integer) 0
    13. 127.0.0.1:6379> keys *
    14. 1) "v2"
    15. 2) "teacher"
    16. 3) "k1"
    17. 4) "k2"
    18. 5) "k3"
    19. 127.0.0.1:6379> get teacher
    20. "zhou"
    21. 127.0.0.1:6379> get v2
    22. "4"
    • dbsize

    查看当前数据库中的key的数目

    1. 127.0.0.1:6379> dbsize
    2. (integer) 5

    多数据库常用命令

    • 多数据库切换

            Redis支持多数据库,Redis在没有任何改动的情况下默认包含16个数据库,数据库名称是用数字0~15来依次命名的。默认使用的序号为“0”的数据库(注意看端口号后的中括号)。

    1. 127.0.0.1:6379> select 10 //切换至序号为10的数据库
    2. OK
    3. 127.0.0.1:6379[10]> select 15 //切换至序号为15的数据库
    4. OK
    5. 127.0.0.1:6379[15]> select 0 //切换至序号为0的数据库
    6. OK
    • 多数据库间移动数据

            Redis的多数据库在一定程度上是相对独立的。例如,在数据库0上面存放的k1的数据,在其他的1~15库中是无法看到的。

    1. 127.0.0.1:6379> set k1 100
    2. OK
    3. 127.0.0.1:6379> get k1
    4. "100"
    5. 127.0.0.1:6379> select 1
    6. OK
    7. 127.0.0.1:6379[1]> get k1
    8. (nil)

            Redis数据库提供了一个move命令,用于多数据库中的移动。基本语法为”move 键 库序号“ 。

    1. 127.0.0.1:6379[1]> select 0 //切换至目标数据库0
    2. OK
    3. 127.0.0.1:6379> get k1 //查看目标数据是否存在
    4. "100"
    5. 127.0.0.1:6379> move k1 1 //将数据库0中k1移动到数据库1中
    6. (integer) 1
    7. 127.0.0.1:6379> select 1 //切换到数据库1
    8. OK
    9. 127.0.0.1:6379[1]> get k1 //查看被移动数据
    10. "100"
    11. 127.0.0.1:6379[1]> select 0
    12. OK
    13. 127.0.0.1:6379> get k1 //在数据库0中无法查看k1的值
    14. (nil)
    • 清除数据库内数据

            Redis数据库的整库数据删除主要分为两个部分:清空当前数据库的数据,使用FLUSHDB命令实现;清空所有数据库的数据,使用FLUSHALL命令实现。但是,数据清空比较危险,生产环境下不建议使用。

    Redis群集

    • Redis集群架构

            Redis Cluster采用虚拟槽分区,将所有的数据根据算法映射到0~16384整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态

    • 集群角色

    Master:Master之间分配slots Slave:Slave向它指定的Master同步数据

    • 集群节点使用的TCP端口

    6379端口用于客户端的连接 16379端口用于群集总线

    • Redis-cluster选举

            如果集群任意master挂掉,且当前master没有slave,则集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态 如果集群中超过半数以上master挂掉,无论是否有slave,集群都进入fail状态

    Redis群集部署

            使用六台服务器搭建Redis群集,其中三台为MASTER,三台为SLAVE。六台服务器地址为:192.168.1.10/24~192.168.1.60/24,步骤如下。

    1. 安装Redis并修改配置文件

            六台服务器上都安装Redis,安装前面的步骤安装即可,只有IP地址不同,其他配置都一样,然后修改配置文件。

    1. [root@localhost ~]# vim /etc/redis/6379.conf
    2. port 6379
    3. bind 192.168.1.10 //本机地址
    4. daemonize yes
    5. logfile /var/log/redis_6379.log
    6. ........................下方配置取消注释”#“
    7. cluster-enabled yes //启动群集
    8. cluster-config-file nodes-6379.conf //群集配置文件
    9. cluster-node-timeout 15000
    10. cluster-require-full-coverage no //yes改为no

            实验环境中,六台服务器每台都需要配置,只需要单独修改一下IP地址即可,所以可以用scp命令来复制文件。

    [root@localhost ~]# scp root@192.168.1.10:/etc/redis/6379.conf /etc/redis/

            修改六台服务器后,在每台上重启redis服务,并查看6379和16379端口是否已经正常开启。

    1. [root@localhost ~]# /etc/init.d/redis_6379 restart
    2. Stopping ...
    3. Redis stopped
    4. Starting Redis server...
    5. [root@localhost ~]# netstat -anpt | grep 6379
    6. tcp       0     0 192.168.1.60:6379       0.0.0.0:*               LISTEN     9659/redis-server 1
    7. tcp       0     0 192.168.1.60:16379     0.0.0.0:*               LISTEN     9659/redis-server 1
    8. tcp       0     0 127.0.0.1:6379         127.0.0.1:34070         TIME_WAIT  

    2. 使用脚本创建群集

            创建群集要用到ruby的一个脚本,在创建群集前,需要先安装ruby的运行环境和ruby的Redis客户端。gem命令是提前下载的redis-3.2.0.gem软件包直接上传即可使用。

    注意:该操作在其中一台服务器上操作即可。

    1. [root@localhost ~]# yum -y install ruby rubygems //系统盘
    2. [root@localhost ~]# eject
    3. [root@localhost ~]# mount /dev/cdrom /media //挂载redis-3.2.0.gem软件包
    4. mount: /dev/sr0 is write-protected, mounting read-only
    5. [root@localhost ~]# cd /media
    6. [root@localhost media]# gem install redis --version 3.2.0
    7. Successfully installed redis-3.2.0
    8. Parsing documentation for redis-3.2.0
    9. Installing ri documentation for redis-3.2.0
    10. 1 gem installed

    使用脚本文件创建群集

    1. [root@localhost redis-3.2.9]# cd /usr/src/redis-3.2.9/src/
    2. [root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.1.10:6379 192.168.1.20:6379 192.168.1.30:6379 192.168.1.40:6379 192.168.1.50:6379 192.168.1.60:6379
    3. >>> Creating cluster
    4. >>> Performing hash slots allocation on 6 nodes...
    5. Using 3 masters:
    6. 192.168.1.10:6379
    7. 192.168.1.20:6379
    8. 192.168.1.30:6379
    9. Adding replica 192.168.1.40:6379 to 192.168.1.10:6379
    10. Adding replica 192.168.1.50:6379 to 192.168.1.20:6379
    11. Adding replica 192.168.1.60:6379 to 192.168.1.30:6379
    12. M: 72e6931ff577f22800bb8e3f0d35e092f6c23c27 192.168.1.10:6379
    13.   slots:0-5460 (5461 slots) master
    14. M: 8f539176e1ff7d4597b6e40e60e469c2ffe992b3 192.168.1.20:6379
    15.   slots:5461-10922 (5462 slots) master
    16. M: 99914bbfc283c482407025ec929f4928650b5f4a 192.168.1.30:6379
    17.   slots:10923-16383 (5461 slots) master
    18. S: 8df39adffccf37618650eec0661f0606676f0f14 192.168.1.40:6379
    19.   replicates 72e6931ff577f22800bb8e3f0d35e092f6c23c27
    20. S: a81e45bef554a8802d2aa7fa278d7ad1961450ba 192.168.1.50:6379
    21.   replicates 8f539176e1ff7d4597b6e40e60e469c2ffe992b3
    22. S: e34893118da9241290146d44a388080e0b5d0b2e 192.168.1.60:6379
    23.   replicates 99914bbfc283c482407025ec929f4928650b5f4a
    24. Can I set the above configuration? (type 'yes' to accept):yes //输入yes
    25. >>> Nodes configuration updated
    26. >>> Assign a different config epoch to each node
    27. >>> Sending CLUSTER MEET messages to join the cluster
    28. Waiting for the cluster to join.
    29. >>> Performing Cluster Check (using node 192.168.1.10:6379)
    30. M: 72e6931ff577f22800bb8e3f0d35e092f6c23c27 192.168.1.10:6379
    31.   slots:0-5460 (5461 slots) master
    32.   1 additional replica(s)
    33. M: 8f539176e1ff7d4597b6e40e60e469c2ffe992b3 192.168.1.20:6379
    34.   slots:5461-10922 (5462 slots) master
    35.   1 additional replica(s)
    36. S: a81e45bef554a8802d2aa7fa278d7ad1961450ba 192.168.1.50:6379
    37.   slots: (0 slots) slave
    38.   replicates 8f539176e1ff7d4597b6e40e60e469c2ffe992b3
    39. M: 99914bbfc283c482407025ec929f4928650b5f4a 192.168.1.30:6379
    40.   slots:10923-16383 (5461 slots) master
    41.   1 additional replica(s)
    42. S: e34893118da9241290146d44a388080e0b5d0b2e 192.168.1.60:6379
    43.   slots: (0 slots) slave
    44.   replicates 99914bbfc283c482407025ec929f4928650b5f4a
    45. S: 8df39adffccf37618650eec0661f0606676f0f14 192.168.1.40:6379
    46.   slots: (0 slots) slave
    47.   replicates 72e6931ff577f22800bb8e3f0d35e092f6c23c27
    48. [OK] All nodes agree about slots configuration.
    49. >>> Check for open slots...
    50. >>> Check slots coverage...
    51. [OK] All 16384 slots covered. //创建完成

    3. 查看群集状态

            M:主,S:从;从ID号可以看到三主三从服务器,1.10服务器的从为1.40,1.20的从服务器为1.50,1.30的从服务器为1.60。

    1. [root@localhost src]# ./redis-trib.rb check 192.168.1.10:6379
    2. >>> Performing Cluster Check (using node 192.168.1.10:6379)
    3. M: 72e6931ff577f22800bb8e3f0d35e092f6c23c27 192.168.1.10:6379
    4.   slots:0-5460 (5461 slots) master
    5.   1 additional replica(s)
    6. M: 8f539176e1ff7d4597b6e40e60e469c2ffe992b3 192.168.1.20:6379
    7.   slots:5461-10922 (5462 slots) master
    8.   1 additional replica(s)
    9. S: a81e45bef554a8802d2aa7fa278d7ad1961450ba 192.168.1.50:6379
    10.   slots: (0 slots) slave
    11.   replicates 8f539176e1ff7d4597b6e40e60e469c2ffe992b3
    12. M: 99914bbfc283c482407025ec929f4928650b5f4a 192.168.1.30:6379
    13.   slots:10923-16383 (5461 slots) master
    14.   1 additional replica(s)
    15. S: e34893118da9241290146d44a388080e0b5d0b2e 192.168.1.60:6379
    16.   slots: (0 slots) slave
    17.   replicates 99914bbfc283c482407025ec929f4928650b5f4a
    18. S: 8df39adffccf37618650eec0661f0606676f0f14 192.168.1.40:6379
    19.   slots: (0 slots) slave
    20.   replicates 72e6931ff577f22800bb8e3f0d35e092f6c23c27
    21. [OK] All nodes agree about slots configuration.
    22. >>> Check for open slots...
    23. >>> Check slots coverage...
    24. [OK] All 16384 slots covered.

    4. 测试群集

            登录Redis群集,设置键值测试。需要跟“-c”参数来激活群集模式。

    1. [root@localhost ~]# redis-cli -h 192.168.1.20 -p 6379 -c
    2. 192.168.1.20:6379> set centos 7
    3. -> Redirected to slot [467] located at 192.168.1.10:6379
    4. OK
    5. 192.168.1.10:6379> get centos
    6. "7"

            创建好群集以后,可以看到,当创建键值时,重定向到其他的服务器上,是按照slot分配的。

  • 相关阅读:
    YOLOv8原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
    【Spring】c命名和p命名空间注入
    LeetCode 697. Degree of an Array
    Python语言学习实战-内置函数all()和any()的使用(附源码和实现效果)
    【EI会议征稿通知】第二届材料科学与智能制造国际学术会议(MSIM 2024)
    GitHub项目里的api
    【STL】set/multiset容器
    证券期货业数据安全管理 与保护指引 附下载地址
    简单错误记录-OJ
    .NET Framework中自带的泛型委托Func
  • 原文地址:https://blog.csdn.net/qq_61116007/article/details/126003689