低版本redis集群部署

一 准备工作

1.1 准备机器和 redis安装包

准备两台服务器,关闭selinux策略(setenforce 0):

192.168.158.201
192.168.158.202

将redis安装包上传到201、202服务器上,并移动到/usr/local/ 目录下

1.2 安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境需要安装gcc
安装gcc:  yum -y install gcc-c++

yum -y install gcc-c++

1.3 集群计划
1个集群6个节点

二 部署

2.1 解压

cd /usr/local/
tar -xvf redis-3.2.10.tar.gz

2.2 跳转到redis解压目录下编译安装

[root@redis1 local]# cd redis-3.2.10/
[root@redis1 redis-3.2.10]# make
[root@redis1 redis-3.2.10]# make install    # 自动进入到 redis的src目录下 进行make install
cd src && make install
make[1]: Entering directory `/usr/local/redis-3.2.10/src'

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/usr/local/redis-3.2.10/src'

安装完成后,这时候会在 /usr/local/bin/目录下看到redis-server、redis-cli 等可执行脚本,进入看一下,如果没有,就要去解压目录的子目录src下找到并复制进去了

2.3 创建redis集群配置文件目录

mkdir -p /data/redis_data

三 配置 redis.conf

3.1 进入redis集群配置文件目录/data/redis_data,创建3个文件夹7001、7002、7003

[root@redis1 ~]# cd /data/redis_data/
[root@redis1 redis_data]# mkdir ./{7001,7002,7003}
[root@redis1 redis_data]# ls
7001  7002  7003

3.2 在7001、7002、7003三个文件夹创建各自的 redis.conf
分别进入每个端口目录创建配置文件,举例:

[root@redis1 redis_data]# cd 7001
[root@redis1 7001]# touch redis.conf

编辑redis.conf        vim redis.conf

编辑内容如下:

以192.168.158.201上的7001节点进行举例

bind 192.168.158.201
protected-mode yes
daemonize yes
port 7001
maxmemory 825mb                # 实际好多redis集群并未配置 maxmemory,所以也可以注释掉该行
dir "/data/redis_data/7001"
loglevel notice
logfile "/data/redis_data/7001/redis.log"
save 900 1
save 300 10
save 60 10000
rdbcompression yes
cluster-enabled yes
cluster-config-file "nodes.conf"
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
pidfile /var/run/redis_7001.pid
tcp-keepalive 300

要注意的点:

1》bind 默认ip为127.0.0.1,需要修改为该节点所在服务器ip,否则创建集群时无法访问对应的端口,无法创建集群。或者设置为0.0.0.0 ,虽不安全,但方便在其他地方连接
2》daemonize是设置是否后台启动 redis,默认no,正常都需要redis后台运行,所以这里设置为yes
3》port 要指定,和端口目录对应
4》maxmemory 要根据服务器最大内存确定 ,比如此处 9765625kb约等于9.3G,服务器最大内存为16G
要合理设置,设置不合理,会报 类似如下的错误,导致设置值失败:

192.168.158.201:7001> set user1 wangwu
-> Redirected to slot [8106] located at 192.168.158.202:7001
(error) OOM command not allowed when used memory > 'maxmemory'.
192.168.158.202:7001> get user1
(nil)


5》dir  不同节点指定不同的dir
6》logfile  不同节点指定不同的logfile
7》cluster-enabled  设置为yes,意为开启集群
8》cluster-config-file 集群的配置文件,首次启动时会自动生成
9》appendonly yes  开启aof持久化模式,每次写操作请求都追加到appendonly.aof文件中
10》redis v3.0+版本增加了保护机制,默认protected-mode yes, 这样目标机器调用可能会报错,最好设置为no

其他节点类似。如图:

四 启动redis集群

4.1 启动各个redis节点

在 192.168.222.201 上执行:

/usr/local/bin/redis-server /data/redis_data/7001/redis.conf
/usr/local/bin/redis-server /data/redis_data/7002/redis.conf
/usr/local/bin/redis-server /data/redis_data/7003/redis.conf

在 192.168.222.202 上执行:

/usr/local/bin/redis-server /data/redis_data/7001/redis.conf
/usr/local/bin/redis-server /data/redis_data/7002/redis.conf
/usr/local/bin/redis-server /data/redis_data/7003/redis.conf

eg:

最后效果:

各个节点端口目录下,在节点启动时会自动生成相关文件(依据各节点的reids.conf配置),eg:

补充1:

关闭某个节点服务的命令为:

以关闭 192.168.158.202 上 端口为7001、7002 的两个redis节点服务为例:

/usr/local/bin/redis-cli -c -h 192.168.158.202 -p 7001 shutdown
/usr/local/bin/redis-cli -c -h 192.168.158.202 -p 7002 shutdown

关闭后192.168.158.202 上还只剩1个 7003节点服务活者,如下图:

补充2:

启动/关闭集群节点服务,我们可以在每个服务器上写一个启动脚本 start-redis.sh 

#!/bin/bash

for ((i=1;i<=3;i++))
    do /usr/local/bin/redis-server /data/redis_data/700$i/redis.conf
done

echo "========= 启动服务完毕! ==========="

如图:

关闭服务类似,我们同样可以写一个脚本 stop-redis.sh

#!/bin/bash

IP="192.168.158.202"

for ((i=1;i<=3;i++))
    do /usr/local/bin/redis-cli -c -h $IP -p 700$i shutdown
done

echo "============ redis服务关闭完毕!================"

如图,

$IP分别为3台服务器IP。

这时只是启动了6个单独的redis服务,他们还不是一个集群(此时,还存不了值),下面就说明如何创建集群。

如果此时,存值会报错,因为没有分槽:

[root@redis2 redis_data]# /usr/local/bin/redis-cli -h 192.168.158.202 -p 7001 -c
192.168.158.202:7001> set test aaa
(error) CLUSTERDOWN Hash slot not served
192.168.158.202:7001>
192.168.158.202:7001> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
192.168.158.202:7001>
192.168.158.202:7001> exit
[root@redis2 redis_data]#

五 创建集群

注意:在任意一台上运行 不要在每台机器上都运行,一台就够了 --- 安装ruby也是,只需要在执行redis-trib.rb 命令的那台上安装ruby即可

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中

在其中一台执行:

/usr/local/redis-3.2.10/src/redis-trib.rb create --replicas 1 192.168.158.201:7001 192.168.158.201:7002 192.168.158.201:7003 192.168.158.202:7001 192.168.158.202:7002 192.168.158.202:7003

--replicas参数指定集群中每个主节点配置几个从节点,这里设置为1。

可能会报错--报错1:

[root@redis1 redis_data]# /usr/local/redis-3.2.10/src/redis-trib.rb create --replicas 1 192.168.158.201:7001 192.168.158.201:7002 192.168.158.201:7003 192.168.158.202:7001 192.168.158.202:7002 192.168.158.202:7003
/usr/bin/env: ruby: No such file or directory
[root@redis1 redis_data]# 

问题原因:

执行 redis-trib.rb, 此脚本是ruby脚本,它依赖ruby环境。

解决方案:

安装ruby的环境,即可解决:

yum -y install ruby        # 不推荐这张方式安装ruby,因为90%的可能性还会产生下面的报错2
                           # 建议采用报错2解决方案中 scl方式安装ruby

查看ruby版本:

[root@redis1 ~]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]

可能会报错--报错2:

[root@redis1 redis_data]# /usr/local/redis-3.2.10/src/redis-trib.rb create --replicas 1 192.168.158.201:7001 192.168.158.201:7002 192.168.158.201:7003 192.168.158.202:7001 192.168.158.202:7002 192.168.158.202:7003
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/redis-3.2.10/src/redis-trib.rb:25:in `<main>'
[root@redis1 redis_data]# 

问题原因:

这错误是提示不能加载redis,因为缺少redis和ruby的接口,使用gem 安装,我们这个时候其实还需要安装对应的Redis的Ruby接口包。我们需要下载对应Redis的gem包安装才行。

解决方案:


安装scl源:

yum install -y centos-release-scl-rh

会在 /etc/yum.repos.d/ 目录下多出一个 CentOS-SCLo-scl-rh.repo 源。

安装 rh-ruby23

yum install rh-ruby23  -y

查看从 scl 中安装的包的列表:

[root@redis1 ~]# scl --list
rh-ruby23

接着进行很有必要的一步

[root@redis1 ~]# scl enable rh-ruby23 bash            # 必要一步

查看 ruby 版本

[root@redis1 ~]# ruby -v
ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-linux]

执行 gem install redis 操作

[root@redis1 ~]# gem install redis
Fetching: redis-4.1.3.gem (100%)
Successfully installed redis-4.1.3
Parsing documentation for redis-4.1.3
Installing ri documentation for redis-4.1.3
Done installing documentation for redis after 2 seconds
1 gem installed
[root@redis1 ~]#

创建集群

[root@redis1 ~]# /usr/local/redis-3.2.10/src/redis-trib.rb create --replicas 1 192.168.158.201:7001 192.168.158.201:7002 192.168.158.201:7003 192.168.158.202:7001 192.168.158.202:7002 192.168.158.202:7003
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.158.201:7001
192.168.158.202:7001
192.168.158.201:7002
Adding replica 192.168.158.202:7002 to 192.168.158.201:7001
Adding replica 192.168.158.201:7003 to 192.168.158.202:7001
Adding replica 192.168.158.202:7003 to 192.168.158.201:7002
M: 8530be0f94f6e0719df81396a3f069ce0b4bbac8 192.168.158.201:7001
   slots:0-5460 (5461 slots) master
M: 2229d809a633eec5dbf8058bdd39a4c78d6f947c 192.168.158.201:7002
   slots:10923-16383 (5461 slots) master
S: d754fb6d21ee7b48cbdaf7f7e24d0e7ff424ccc0 192.168.158.201:7003
   replicates 52cddc728843d189c13ab19e3c06b6575ae9a349
M: 52cddc728843d189c13ab19e3c06b6575ae9a349 192.168.158.202:7001
   slots:5461-10922 (5462 slots) master
S: 217f41e1b9dce478942d6cee006aef19a2f5b362 192.168.158.202:7002
   replicates 8530be0f94f6e0719df81396a3f069ce0b4bbac8
S: 431c6e75250da33440c2b713fd89501d24679fe9 192.168.158.202:7003
   replicates 2229d809a633eec5dbf8058bdd39a4c78d6f947c
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.158.201:7001)
M: 8530be0f94f6e0719df81396a3f069ce0b4bbac8 192.168.158.201:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 217f41e1b9dce478942d6cee006aef19a2f5b362 192.168.158.202:7002
   slots: (0 slots) slave
   replicates 8530be0f94f6e0719df81396a3f069ce0b4bbac8
S: d754fb6d21ee7b48cbdaf7f7e24d0e7ff424ccc0 192.168.158.201:7003
   slots: (0 slots) slave
   replicates 52cddc728843d189c13ab19e3c06b6575ae9a349
M: 52cddc728843d189c13ab19e3c06b6575ae9a349 192.168.158.202:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 431c6e75250da33440c2b713fd89501d24679fe9 192.168.158.202:7003
   slots: (0 slots) slave
   replicates 2229d809a633eec5dbf8058bdd39a4c78d6f947c
M: 2229d809a633eec5dbf8058bdd39a4c78d6f947c 192.168.158.201:7002
   slots:10923-16383 (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@redis1 ~]# 

登录  redis-cli -h 192.168.158.201 -p 7001 -c
查看集群节点信息 进入redis-cli命令行  cluster info

[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7001 -c
192.168.158.201:7001> 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:1
cluster_stats_messages_sent:2226
cluster_stats_messages_received:2226
192.168.158.201:7001> 

登录集群  redis-cli -h 192.168.158.201 -p 7001 -c

列出集群节点 redis-cli命令行 cluster nodes

192.168.158.201:7001> cluster nodes
5bab5278278cc9e5af5196fbe8ce33db53c3b9d0 192.168.158.201:7002 master - 0 1585055135326 2 connected 10923-16383
5cc81930eb00c813c92a0b1d6a91473da65fb85f 192.168.158.202:7001 slave eefdc254fb3eda030452a87f5e3921934410717a 0 1585055136838 7 connected
d49a289806b28dd69cd41c6a7af8615ef7254a44 192.168.158.201:7001 myself,master - 0 0 1 connected 0-5460
eefdc254fb3eda030452a87f5e3921934410717a 192.168.158.201:7003 master - 0 1585055136838 7 connected 5461-10922
05712dbd73f963f72eb976e95b559dba751215f6 192.168.158.202:7002 slave d49a289806b28dd69cd41c6a7af8615ef7254a44 0 1585055136334 5 connected
9e4ac4350b85148cedd53c51027db617d27d4fbc 192.168.158.202:7003 slave 5bab5278278cc9e5af5196fbe8ce33db53c3b9d0 0 1585055135327 6 connected
192.168.158.201:7001> 

集群状态检查 

/usr/local/redis-3.2.10/src/redis-trib.rb check 192.168.158.201:7001

[root@redis1 ~]# /usr/local/redis-3.2.10/src/redis-trib.rb check 192.168.158.201:7001
>>> Performing Cluster Check (using node 192.168.158.201:7001)
M: d49a289806b28dd69cd41c6a7af8615ef7254a44 192.168.158.201:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 5bab5278278cc9e5af5196fbe8ce33db53c3b9d0 192.168.158.201:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 5cc81930eb00c813c92a0b1d6a91473da65fb85f 192.168.158.202:7001
   slots: (0 slots) slave
   replicates eefdc254fb3eda030452a87f5e3921934410717a
M: eefdc254fb3eda030452a87f5e3921934410717a 192.168.158.201:7003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 05712dbd73f963f72eb976e95b559dba751215f6 192.168.158.202:7002
   slots: (0 slots) slave
   replicates d49a289806b28dd69cd41c6a7af8615ef7254a44
S: 9e4ac4350b85148cedd53c51027db617d27d4fbc 192.168.158.202:7003
   slots: (0 slots) slave
   replicates 5bab5278278cc9e5af5196fbe8ce33db53c3b9d0
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@redis1 ~]#

注意:/src/redis-trib.rb check 192.168.158.201:7001 只适用于redis3这样的低版本,对于 redis6这样的高版本 redis-trib.rb 命令不再可用, 要改用 redis-cli 命令,比如 redis-cli --cluster check 192.168.158.201:7001

登录集群  redis-cli -h 192.168.158.201 -p 7001 -c

client list 用于返回所有连接到服务器的客户端信息和统计数据。

192.168.158.201:7001> client list
id=69 addr=192.168.158.202:42464 fd=15 name= age=3184 idle=1 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf
id=70 addr=192.168.158.201:52154 fd=19 name= age=1502 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
192.168.158.201:7001>

或者

[root@redis1 ~]# redis-cli -c -h 192.168.158.201 -p 7001 client list
id=69 addr=192.168.158.202:42464 fd=15 name= age=3263 idle=0 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=replconf
id=70 addr=192.168.158.201:52154 fd=19 name= age=1581 idle=79 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client
id=71 addr=192.168.158.201:52156 fd=20 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
[root@redis1 ~]#

查看集群某个节点的信息

info

查看 192.168.158.201:7001 节点的信息

redis-cli -h 192.168.158.201 -p 7001 -c

192.168.158.201:7001> info
# Server
redis_version:3.2.10
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:fdba0b16b2c26f2d
redis_mode:cluster
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:7578
run_id:d25945c08ee2d733bc1b5de6767f904867b9d587
tcp_port:7001
uptime_in_seconds:1981846
uptime_in_days:22
hz:10
lru_clock:8003303
executable:/usr/local/bin/redis-server
config_file:/data/redis_data/7001/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:2419440
used_memory_human:2.31M
used_memory_rss:11104256
used_memory_rss_human:10.59M
used_memory_peak:2521512
used_memory_peak_human:2.40M
total_system_memory:1021906944
total_system_memory_human:974.57M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:865075200
maxmemory_human:825.00M
maxmemory_policy:noeviction
mem_fragmentation_ratio:4.59
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1585052763
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:1
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:0
aof_base_size:0
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0

# Stats
total_connections_received:70
total_commands_processed:61390
instantaneous_ops_per_sec:1
total_net_input_bytes:2376422
total_net_output_bytes:184930
instantaneous_input_kbps:0.05
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:3
sync_partial_ok:5
sync_partial_err:2
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:1343440
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.158.202,port=7002,state=online,offset=86033,lag=1
master_repl_offset:86033
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:73826
repl_backlog_histlen:12208

# CPU
used_cpu_sys:182.70
used_cpu_user:26.13
used_cpu_sys_children:0.29
used_cpu_user_children:0.00

# Cluster
cluster_enabled:1

# Keyspace
192.168.158.201:7001> 

查看redis集群 192.168.158.202:7003 节点的信息

[root@redis2 ~]# redis-cli -c -h 192.168.158.202 -p 7003 info
# Server
redis_version:3.2.10
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:34d7c60c97efd851
redis_mode:cluster
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:7112
run_id:6048648bd39d5ccb2465fb9adab1ecc16a4bc875
tcp_port:7003
uptime_in_seconds:1981869
uptime_in_days:22
hz:10
lru_clock:8003346
executable:/usr/local/bin/redis-server
config_file:/data/redis_data/7003/redis.conf

# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1385752
used_memory_human:1.32M
used_memory_rss:7970816
used_memory_rss_human:7.60M
used_memory_peak:1390184
used_memory_peak_human:1.33M
total_system_memory:1021906944
total_system_memory_human:974.57M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:865075200
maxmemory_human:825.00M
maxmemory_policy:noeviction
mem_fragmentation_ratio:5.75
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1583142804
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:60
aof_base_size:60
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0

# Stats
total_connections_received:25
total_commands_processed:6180
instantaneous_ops_per_sec:0
total_net_input_bytes:87542
total_net_output_bytes:2389581
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.05
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:99543
migrate_cached_sockets:0

# Replication
role:slave
master_host:192.168.158.201
master_port:7002
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:86219
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:196.13
used_cpu_user:21.67
used_cpu_sys_children:1.47
used_cpu_user_children:0.01

# Cluster
cluster_enabled:1

# Keyspace
db0:keys=1,expires=0,avg_ttl=0
[root@redis2 ~]# 

登录集群  redis-cli -h 192.168.158.201 -p 7001 -c

设置值,查看值 (设置值,有可能重定向到集群中的任一节点)

[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7001 -c
192.168.158.201:7001> set user1 zhangsan
-> Redirected to slot [8106] located at 192.168.158.202:7001
OK
192.168.158.202:7001> get user1
"zhangsan"
192.168.158.202:7001>

登录集群  redis-cli -h 192.168.158.201 -p 7001 -c

查看内存 进入redis-cli命令行 info memory

192.168.158.201:7001> info memory
# Memory
used_memory:2458760
used_memory_human:2.34M
used_memory_rss:10043392
used_memory_rss_human:9.58M
used_memory_peak:2521512
used_memory_peak_human:2.40M
total_system_memory:1021906944
total_system_memory_human:974.57M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:865075200
maxmemory_human:825.00M
maxmemory_policy:noeviction
mem_fragmentation_ratio:4.08
mem_allocator:jemalloc-4.0.3
192.168.158.201:7001>

退出redis-cli 命令行:

exit 或 quit

eg:

192.168.158.201:7002> get user1
-> Redirected to slot [8106] located at 192.168.158.201:7003
"zhangsan"
192.168.158.201:7003> exit
[root@redis2 ~]#



[root@redis1 redis_data]# redis-cli -h 192.168.158.201 -p 7003 -c
192.168.158.201:7003> get user2
-> Redirected to slot [12233] located at 192.168.158.201:7002
"wangliu"
192.168.158.201:7002> quit
[root@redis1 redis_data]#

六 redis集群设置密码

redis集群设置密码,推荐使用命令的方式进行设置,好处是不用重启redis集群。

配置集群连接密码:

进入节点输入下面命令:
config set masterauth cBg756hQf35
config set requirepass cBg756hQf35
 

[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7001 -c
192.168.158.201:7001> config set masterauth cBg756hQf35
OK
192.168.158.201:7001> config set requirepass cBg756hQf35
OK
192.168.158.201:7001>

使用密码重新进入节点输入命令,将配置写到配置文件中。

config rewrite

192.168.158.201:7001> exit
[root@redis1 ~]# 
[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7001 -c -a cBg756hQf35
192.168.158.201:7001> config rewrite
OK
192.168.158.201:7001> exit
[root@redis1 ~]# 

上面命令每个节点(此例中共6个节点)都需要执行。

如果不重新进入节点,则config rewrite 会失败。如下图:

如果重新进入节点,而不输入密码,则config rewrite 也会失败,如下图:

进入各节点redis.conf配置文件,会发现 密码 已写入配置文件中。如下图黄色圈起来部分所示。

验证密码是否加成功:

[root@redis1 ~]# redis-cli -h 192.168.158.202 -p 7003 -c
192.168.158.202:7003> keys *
(error) NOAUTH Authentication required.
192.168.158.202:7003>

查看集群某个节点下所有的key (某个节点和其对应的主节点或从节点显示的keys是一致的)

192.168.158.202:7002> exit
[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7001 -c -a cBg756hQf35
192.168.158.201:7001> keys *
(empty list or set)
192.168.158.201:7001> exit
[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7002 -c -a cBg756hQf35
192.168.158.201:7002> keys *
1) "user3"
2) "user2"
192.168.158.201:7002> exit
[root@redis1 ~]# redis-cli -h 192.168.158.201 -p 7003 -c -a cBg756hQf35
192.168.158.201:7003> keys *
1) "user1"
192.168.158.201:7003> exit
[root@redis1 ~]# redis-cli -h 192.168.158.202 -p 7001 -c -a cBg756hQf35
192.168.158.202:7001> keys *
1) "user1"
192.168.158.202:7001> exit
[root@redis1 ~]# redis-cli -h 192.168.158.202 -p 7002 -c -a cBg756hQf35
192.168.158.202:7002> keys *
(empty list or set)
192.168.158.202:7002> exit
[root@redis1 ~]# redis-cli -h 192.168.158.202 -p 7003 -c -a cBg756hQf35
192.168.158.202:7003> keys *
1) "user3"
2) "user2"
192.168.158.202:7003>

参考文章链接:

redis集群搭建 - 单曲荨环 - 博客园

Lettuce之RedisClusterClient使用以及源码分析 - 开心朵朵 - 博客园

https://www.jianshu.com/p/e0fbcdd6eb73

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值