一 准备工作
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>
参考文章链接: