redis-cluster集群搭建
集群节点信息
192.168.222.131:46379 主要节点1
192.168.222.131:46380 从节点1
192.168.222.131:46381 从节点2192.168.222.132:46379 主要节点2
192.168.222.132:46380 从节点1
192.168.222.132:46381 从节点2192.168.222.133:46379 主要节点3
192.168.222.133:46380 从节点1
192.168.222.133:46381 从节点2
集群节点配置
集群主节点配置
[root@localhost redis]# cat redis-46379.conf
port 46379
cluster-enabled yes
cluster-config-file nodes-46379.conf
cluster-node-timeout 5000
requirepass F3EE4Dk44ddDSLKL
masterauth F3EE4Dk44ddDSLKL
#protected-mode no
daemonize yes
appendonly yes
appendfilename "appendonly.aof"
dbfilename dump-46379.rdb
dir /data/redis/46379
logfile /data/redis/46379/redis.log
集群从节点1 配置
[root@localhost redis]# cat redis-46380.conf
port 46380
cluster-enabled yes
cluster-config-file nodes-46380.conf
cluster-node-timeout 5000
requirepass F3EE4Dk44ddDSLKL
masterauth F3EE4Dk44ddDSLKL
#protected-mode no
daemonize yes
appendonly yes
appendfilename "appendonly.aof"
dbfilename dump-46380.rdb
dir /data/redis/46380
logfile /data/redis/46380/redis.log
集群从节点2 配置
[root@localhost redis]# cat redis-46381.conf
port 46381
cluster-enabled yes
cluster-config-file nodes-46381.conf
cluster-node-timeout 5000
requirepass F3EE4Dk44ddDSLKL
masterauth F3EE4Dk44ddDSLKL
#protected-mode no
daemonize yes
appendonly yes
appendfilename "appendonly.aof"
dbfilename dump-46381.rdb
dir /data/redis/46381
logfile /data/redis/46381/redis.log
节点启动命令
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-server /data/redis/redis-46379.conf
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-server /data/redis/redis-46380.conf
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-server /data/redis/redis-46381.conf
节点停止命令
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -p 46379 -a F3EE4Dk44ddDSLKL shutdown
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -p 46380 -a F3EE4Dk44ddDSLKL shutdown
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -p 46381 -a F3EE4Dk44ddDSLKL shutdown
集群构建
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster create \
192.168.222.131:46379 192.168.222.131:46380 192.168.222.131:46381 \
192.168.222.132:46379 192.168.222.132:46380 192.168.222.132:46381 \
192.168.222.133:46379 192.168.222.133:46380 192.168.222.133:46381 --cluster-replicas 2
检查集群节点信息
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 192.168.222.133:46379@56379 master - 0 1732698781824 7 connected 10923-16383
c6927c5de96959a24d04defe1227ca338089219e 192.168.222.131:46379@56379 myself,master - 0 1732698781000 1 connected 0-5460
964f27d3abd421ce99d6814cbc33f7efc3bd473d 192.168.222.132:46379@56379 master - 0 1732698779513 4 connected 5461-10922
4870524e9a47506996015387ea67e6491dd3adac 192.168.222.131:46380@56380 slave a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 0 1732698781522 7 connected
4891c05297daa8e310ac616d159b444d54ba7b51 192.168.222.132:46381@56381 slave a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 0 1732698780517 7 connected
0b88544c661dafef8f79c5204a5f6d7a8abde20b 192.168.222.133:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732698780819 1 connected
bf5549f442b6c096efda3c97472813fdfd1338f3 192.168.222.132:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732698780000 1 connected
b4e716e733cfbe3b61130981fe479f9b38ba2f1e 192.168.222.131:46381@56381 slave 964f27d3abd421ce99d6814cbc33f7efc3bd473d 0 1732698780517 4 connected
504cbbeb8a73512127a1566ac91f846145b11a58 192.168.222.133:46381@56381 slave 964f27d3abd421ce99d6814cbc33f7efc3bd473d 0 1732698781000 4 connected
数据写入测试
# cat write-data-redis.py
from rediscluster import RedisCluster
# 启动节点列表
startup_nodes = [{"host": "192.168.222.131", "port": "46379"}]
# 创建集群连接
rc = RedisCluster(startup_nodes=startup_nodes, decode_responses=True, password='F3EE4Dk44ddDSLKL')
# 写入数据
for i in range(100):# 例如,写入的数据data_size_kb = 1data = 'kjasjkldfjalsdflasdflasdfjllkasjdflasf' * (data_size_kb * 1024 * 1024) rc.set(f'key:{i}', data)print(f'Written key:{i} with {data_size_kb}KB of data')
print("Data written.")# python3 write-data-redis.py
主机内存查看
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 7.8G 2.2G 5.5G 11M 120M 5.4G
Swap: 3.6G 0B 3.6G
节点信息查询
# 连接集群
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -c -p 46379 -h 192.168.222.131# 监控redis服务器的性能
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 --stat# 获取服务器的统计信息
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 INFO# 检查集群状态
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER INFO# 检查集群节点信息
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES
新添加集群节点信息
192.168.222.134:46379
192.168.222.134:46380
192.168.222.134:46381192.168.222.135:46379
192.168.222.135:46380
192.168.222.135:46381192.168.222.136:46379
192.168.222.136:46380
192.168.222.136:46381
添加新节点到集群
- 将新节点加入集群
# 添加主节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.134:46379 192.168.222.131:46379
# 查询主节点id
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES |grep 134
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
7e4645f509d071be565d53f7167464456f869094 192.168.222.134:46379@56379 master - 0 1732699138000 0 connected
# 添加从节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.134:46380 192.168.222.131:46379 --cluster-slave --cluster-master-id 7e4645f509d071be565d53f7167464456f869094
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.134:46381 192.168.222.131:46379 --cluster-slave --cluster-master-id 7e4645f509d071be565d53f7167464456f869094# 添加主节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.135:46379 192.168.222.131:46379
# 查询主节点id
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES |grep 135
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
68520244e77a3a69122816496f5c9773b50e5277 192.168.222.135:46379@56379 master - 0 1732699237110 11 connected
# 添加从节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.135:46380 192.168.222.131:46379 --cluster-slave --cluster-master-id 68520244e77a3a69122816496f5c9773b50e5277
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.135:46381 192.168.222.131:46379 --cluster-slave --cluster-master-id 68520244e77a3a69122816496f5c9773b50e5277# 添加主节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.136:46379 192.168.222.131:46379
# 查询主节点id
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES |grep 136
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
fa79672847de00a6590a0ebb2ee7d93b5ca11c82 192.168.222.136:46379@56379 master - 0 1732699305971 0 connected
# 添加从节点
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.136:46380 192.168.222.131:46379 --cluster-slave --cluster-master-id fa79672847de00a6590a0ebb2ee7d93b5ca11c82
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node 192.168.222.136:46381 192.168.222.131:46379 --cluster-slave --cluster-master-id fa79672847de00a6590a0ebb2ee7d93b5ca11c82
检查集群节点信息
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
849bcb37b280614a2314a989114f204546f17d7d 192.168.222.134:46380@56380 slave 7e4645f509d071be565d53f7167464456f869094 0 1732699378000 12 connected
fa79672847de00a6590a0ebb2ee7d93b5ca11c82 192.168.222.136:46379@56379 master - 0 1732699377568 0 connected
c530f5086b3c5da80e3d8351d5572880f74a8761 192.168.222.136:46380@56380 slave fa79672847de00a6590a0ebb2ee7d93b5ca11c82 0 1732699377000 0 connected
bf534fe091be5239c268d0aa90a4fb937c493f72 192.168.222.136:46381@56381 slave fa79672847de00a6590a0ebb2ee7d93b5ca11c82 0 1732699377000 0 connected
964f27d3abd421ce99d6814cbc33f7efc3bd473d 192.168.222.132:46379@56379 master - 0 1732699378071 4 connected 5461-10922
bbb3838d05683746ff5a848a0b4ef08fee49c1fb 192.168.222.135:46381@56381 slave 68520244e77a3a69122816496f5c9773b50e5277 0 1732699377065 11 connected
4ea5c56c01a07f9cec7d6ba2c7b7e3b2a0743642 192.168.222.134:46381@56381 slave 7e4645f509d071be565d53f7167464456f869094 0 1732699377000 12 connected
bf5549f442b6c096efda3c97472813fdfd1338f3 192.168.222.132:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732699378372 1 connected
68520244e77a3a69122816496f5c9773b50e5277 192.168.222.135:46379@56379 master - 0 1732699378000 11 connected
a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 192.168.222.133:46379@56379 master - 0 1732699377568 7 connected 10923-16383
c6927c5de96959a24d04defe1227ca338089219e 192.168.222.131:46379@56379 myself,master - 0 1732699377000 1 connected 0-5460
4891c05297daa8e310ac616d159b444d54ba7b51 192.168.222.132:46381@56381 slave a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 0 1732699378575 7 connected
4870524e9a47506996015387ea67e6491dd3adac 192.168.222.131:46380@56380 slave a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 0 1732699378574 7 connected
0b88544c661dafef8f79c5204a5f6d7a8abde20b 192.168.222.133:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732699377568 1 connected
7e4645f509d071be565d53f7167464456f869094 192.168.222.134:46379@56379 master - 0 1732699378575 12 connected
b4e716e733cfbe3b61130981fe479f9b38ba2f1e 192.168.222.131:46381@56381 slave 964f27d3abd421ce99d6814cbc33f7efc3bd473d 0 1732699377366 4 connected
504cbbeb8a73512127a1566ac91f846145b11a58 192.168.222.133:46381@56381 slave 964f27d3abd421ce99d6814cbc33f7efc3bd473d 0 1732699377568 4 connected
9343f98f07ee8a0f442bdfd5197ee13c40e5e203 192.168.222.135:46380@56380 slave 68520244e77a3a69122816496f5c9773b50e5277 0 1732699378575 11 connected
槽位重新分配
a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 192.168.222.133:46379@56379 master - 0 1732699377568 7 connected 10923-16383
一共是0-16383 个槽位,平均分布在3个节点上,我现在需要平局分布在6个节点上,每个节点大概是2730个槽位,也可以把现有主节点槽位移动一半到没有槽位的主节点上
迁移到哪里去
7e4645f509d071be565d53f7167464456f869094 192.168.222.134:46379@56379 master - 0 1732699378575 12 connected
68520244e77a3a69122816496f5c9773b50e5277 192.168.222.135:46379@56379 master - 0 1732699378000 11 connected
fa79672847de00a6590a0ebb2ee7d93b5ca11c82 192.168.222.136:46379@56379 master - 0 1732699377568 0 connected从哪里迁移
c6927c5de96959a24d04defe1227ca338089219e 192.168.222.131:46379@56379 myself,master - 0 1732699377000 1 connected 0-5460
964f27d3abd421ce99d6814cbc33f7efc3bd473d 192.168.222.132:46379@56379 master - 0 1732699378071 4 connected 5461-10922
a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 192.168.222.133:46379@56379 master - 0 1732699377568 7 connected 10923-16383迁移的命令
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster reshard 192.168.222.131:46379
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster reshard 192.168.222.132:46379
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster reshard 192.168.222.133:46379fa79672847de00a6590a0ebb2ee7d93b5ca11c82 192.168.222.136:46379@56379 master - 0 1732700418532 0 connected
b4e716e733cfbe3b61130981fe479f9b38ba2f1e 192.168.222.131:46381@56381 master - 0 1732700419538 19 connected 5461-10922
槽位置迁移示范
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster reshard 192.168.222.131:46379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.222.131:46379)
M: c6927c5de96959a24d04defe1227ca338089219e 192.168.222.131:46379slots:[0-5460] (5461 slots) master2 additional replica(s)
...........
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 2730
What is the receiving node ID? 7e4645f509d071be565d53f7167464456f869094
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: c6927c5de96959a24d04defe1227ca338089219e
Source node #2: done
...........
Moving slot 2729 from c6927c5de96959a24d04defe1227ca338089219e
Do you want to proceed with the proposed reshard plan (yes/no)? yes
...........
Moving slot 2729 from 192.168.222.131:46379 to 192.168.222.134:46379:
检查集群节点信息
# 迁移完成
[root@localhost ~]# /data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
849bcb37b280614a2314a989114f204546f17d7d 192.168.222.134:46380@56380 slave 7e4645f509d071be565d53f7167464456f869094 0 1732700757000 25 connected
fa79672847de00a6590a0ebb2ee7d93b5ca11c82 192.168.222.136:46379@56379 master - 0 1732700756000 27 connected 5461-8190
c530f5086b3c5da80e3d8351d5572880f74a8761 192.168.222.136:46380@56380 slave fa79672847de00a6590a0ebb2ee7d93b5ca11c82 0 1732700757583 27 connected
bf534fe091be5239c268d0aa90a4fb937c493f72 192.168.222.136:46381@56381 slave fa79672847de00a6590a0ebb2ee7d93b5ca11c82 0 1732700758085 27 connected
964f27d3abd421ce99d6814cbc33f7efc3bd473d 192.168.222.132:46379@56379 slave b4e716e733cfbe3b61130981fe479f9b38ba2f1e 0 1732700757482 19 connected
bbb3838d05683746ff5a848a0b4ef08fee49c1fb 192.168.222.135:46381@56381 slave 68520244e77a3a69122816496f5c9773b50e5277 0 1732700757000 26 connected
4ea5c56c01a07f9cec7d6ba2c7b7e3b2a0743642 192.168.222.134:46381@56381 slave 7e4645f509d071be565d53f7167464456f869094 0 1732700756000 25 connected
bf5549f442b6c096efda3c97472813fdfd1338f3 192.168.222.132:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732700757583 1 connected
68520244e77a3a69122816496f5c9773b50e5277 192.168.222.135:46379@56379 master - 0 1732700756476 26 connected 10923-13652
a2b16bfa39fafe9b536ac6c952ae2dec58a8e35e 192.168.222.133:46379@56379 slave 4870524e9a47506996015387ea67e6491dd3adac 0 1732700758085 17 connected
c6927c5de96959a24d04defe1227ca338089219e 192.168.222.131:46379@56379 myself,master - 0 1732700757000 1 connected 2730-5460
4891c05297daa8e310ac616d159b444d54ba7b51 192.168.222.132:46381@56381 slave 4870524e9a47506996015387ea67e6491dd3adac 0 1732700758085 17 connected
4870524e9a47506996015387ea67e6491dd3adac 192.168.222.131:46380@56380 master - 0 1732700757079 17 connected 13653-16383
0b88544c661dafef8f79c5204a5f6d7a8abde20b 192.168.222.133:46380@56380 slave c6927c5de96959a24d04defe1227ca338089219e 0 1732700756000 1 connected
7e4645f509d071be565d53f7167464456f869094 192.168.222.134:46379@56379 master - 0 1732700756000 25 connected 0-2729
b4e716e733cfbe3b61130981fe479f9b38ba2f1e 192.168.222.131:46381@56381 master - 0 1732700758085 19 connected 8191-10922
504cbbeb8a73512127a1566ac91f846145b11a58 192.168.222.133:46381@56381 slave b4e716e733cfbe3b61130981fe479f9b38ba2f1e 0 1732700757000 19 connected
9343f98f07ee8a0f442bdfd5197ee13c40e5e203 192.168.222.135:46380@56380 slave 68520244e77a3a69122816496f5c9773b50e5277 0 1732700756000 26 connected
查看节点内存使用信息
# 原先节点
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 7.8G 1.2G 6.5G 11M 121M 6.4G
Swap: 3.6G 0B 3.6G# 新增节点
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 7.8G 1.2G 6.5G 11M 112M 6.4G
Swap: 3.6G 0B 3.6G
集群各种操作命令
# 连接集群
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -c -p 46379 -h 192.168.222.131# 维护集群
# 监控命令:
# 监控redis服务器的性能
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 --stat# 获取服务器的统计信息
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 INFO# 检查集群状态和节点信息
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER INFO
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CLUSTER NODES# 动态配置修改命令:
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 CONFIG SET <配置项> <值># 扩展集群(添加新节点):
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster add-node <新节点IP>:<新节点端口> <已存在节点IP>:<已存在节点端口># 缩减集群(删除节点):
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster del-node <已存在节点IP>:<已存在节点端口> <节点ID>
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster del-node 192.168.222.134:46379 05ddef40e900862d61ea895568dc0b65b562eb99
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster del-node 192.168.222.134:46380 1f02da1cd8339ae877f50ab7b24a46b2de0a4c2d
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster del-node 192.168.222.134:46381 eb0eb008856d63c7ae7671f70050939aac36a64f# 故障恢复
# 手动干预修复集群:
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL --cluster fix <任意节点IP>:<任意节点端口># 备份(在每个节点上执行):
/data/redis/redis-stack-server-7.2.0-v8/bin/redis-cli -a F3EE4Dk44ddDSLKL -p 46379 -h 192.168.222.131 BGSAVE# 恢复(假设你有一个 RDB 快照文件):
# 恢复通常涉及将 RDB 文件复制到 Redis 数据目录并重启 Redis 服务。确保在恢复之前关闭 Redis 服务。
cp /path/to/your/backup.rdb /var/lib/redis/dump.rdb
/data/redis/bin/redis-server /etc/redis/redis.conf查看日志:
Redis 日志文件的位置根据你的安装和配置可能不同,但通常你可以这样查看:
tail -f /var/log/redis/redis-server.log
相关文章:
redis-cluster集群搭建
集群节点信息 192.168.222.131:46379 主要节点1 192.168.222.131:46380 从节点1 192.168.222.131:46381 从节点2192.168.222.132:46379 主要节点2 192.168.222.132:46380 从节点1 192.168.222.132:46381 从节点2192.168.222.133:46379 主要节点3 192.168.222.133:46380 从节点…...
C语言解决空瓶换水问题:高效算法与实现
标题:C语言解决空瓶换水问题:高效算法与实现 一、问题描述 在一个饮料促销活动中,你可以通过空瓶换水的方式免费获得更多的水:3个空瓶可以换1瓶水。喝完这瓶水后,空瓶会再次变为空瓶。假设你最初拥有一定数量的空瓶&a…...
单例模式入门
单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的…...
MongoDB快速入门
1 MongoDB 1.1 MongoDB 概念 1.1.1 什么是 MongoDB MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C语言编写。 目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。 在Mo…...
c语言中的extern是什么
在C语言中,extern 是一个关键字,用于声明变量或函数的外部链接。它告诉编译器该变量或函数的定义在其他文件中,编译器在编译当前文件时并不需要知道变量或函数的具体定义,而是将它们视作外部引用。 1. 变量的 extern 声明 当你在…...
CTF之密码学(摩斯密码)
一、历史背景 摩尔斯电码发明于1837年,是一种早期的数字化通信形式。它最初由艾尔菲德维尔和摩尔斯等人构思,通过点、划和中间的停顿,把各个字元以及标点符号彼此独立地发送出去。这种标识不同符号的方案后来被放入摩尔斯的专利中࿰…...
Flink 任务启动脚本-V2(包括ck启动)
#!/bin/bash#crontab时设置,如果依赖其他环境变量配置,可以在脚本执行一下环境变量脚本 source /etc/profile# 进入脚本目录 curdirdirname "$0" curdircd "$curdir"; pwd echo "进入启动脚本目录 $curdir"# 定义应用程序…...
16:00面试,16:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
selinux和防火墙
SElinux 1、selinux简介 SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux。 SELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。 SELinux是对程序、文件等权限设置依据的一个内核模块。…...
Android 13 Aosp Settings Android Studio版本
Android 13 Aosp Settings Android Studio版本 Settings相关源码 Settings https://android.googlesource.com/platform/packages/apps/Settings/+/refs/heads/android13-release SettingsIntelligence https://android.googlesource.com/platform/packages/apps/SettingsIn…...
[241127] Mistral AI 更新 Le Chat,免费提供前沿 AI 助手!| TrendForce 预测 2025 十大科技趋势
目录 Mistral AI 更新 Le Chat,免费提供前沿 AI 助手!TrendForce 预测 2025 十大科技趋势 Mistral AI 更新 Le Chat,免费提供前沿 AI 助手! Mistral AI 宣布对其免费 AI 助手 Le Chat 进行重大更新,新增多项强大功能&…...
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织,已被 awesome-go 收录&am…...
linux安全管理-账号口令
文章目录 1 设备密码复杂度策略2 设备密码生存周期、最小长度、更改最小间隔天数和过期前警告天数3 使用 PAM 认证禁止指定组之外的用户使用 su 切换到 root4 制作用户权限对照表 1 设备密码复杂度策略 1、配置内容 检查密码复杂度策略中设置的特殊字符、大写字母、小写字母和…...
uni-app自定义底部tab并且根据字段显示和隐藏
首先将所有tab使用到的页面创建好并且在pages里面配置好,要在pages.json中的"tabBar里面配置"custom": true将自带的tab底部导航关闭 "pages": [{"path": "pages/mine/mine","style": {"navigationBa…...
C#开发合集
用C#轻松搞定m3u8视频下载与合并 嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧! 准备工作 在动手之前…...
Chrome和edge浏览器如何为任何网站强制暗模式
前言 因为我的编辑器是黑色,可能是看的时间长了比较喜欢这种颜色了,感觉白色有些刺眼。尤其是看文章时,两边的空白纯白色,所以强迫症搜素设置了谷歌浏览器和edge如何设置成黑色。 Chrome和edge浏览器如何为任何网站强制暗模式 前…...
第二十章 Java多线程--JUC并发工具-CountDownLatch
目录 一、CountDownLatch基础概念 CountDownLatch 的核心概念 CountDownLatch 的常用方法 场景一:主线程等待多个子线程执行完毕 场景二:实现多个线程同时开始执行任务 场景三:统计报表优化 CountDownLatch 的局限性 结论 二、Count…...
限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。
限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。通常,etcd 只应当对 Kubernetes 控制平面的组件(如 API Server、Controller Manager、Scheduler 等)以及某些维护工具(如备份工具)开放访问权限&…...
shell脚本基础学习_总结篇(完结)
细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…...
Linux之网络基础
网络发展 网络的发展可以从人与人之间的工作模式开始谈起, 人与人的工作模式反应了机器与机器的工作模式: 1. 独立模式: 在网络发展的早期计算机间处于独立模式, 计算机之间相互独立 最开始计算机之间是独立运行的, 数据之间的交互需要人用软盘等存储介质拷贝过去, 一般涉及…...
《Vue零基础入门教程》第十课:属性绑定指令
往期内容 《Vue零基础入门教程》第一课:Vue简介 《Vue零基础入门教程》第二课:搭建开发环境 《Vue零基础入门教程》第三课:起步案例 《Vue零基础入门教程》第四课:应用实例 《Vue零基础入门教程》第五课:挂载 《…...
RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange
前言: RabbitMQ 延迟队列插件(rabbitmq_delayed_message_exchange)是一个社区开发的插件,它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件,用户可以创建一种特殊的交换机类型 x-delayed-message,该…...
MATLAB中Simulink的基础知识
Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink提供一个动态系统建模、仿真和…...
Swift——单例模式
单例是软件设计常用的一种模式,它的核心结构中只有一个被称为单例的特殊类,通过单例模式可以保证应用该模式的类只有一个实例化对象,其作用就是能够使类中的一个对象成为系统中的唯一实例。 单例的特点: 某个类只有一个实例化对象…...
百度智能云千帆大模型平台引领企业创新增长
本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…...
scala统计词频
目标:统计词频 (1)从文件1.tst,读入内容,保存在一个字符串中。 (2)统计字符串中,每个单词出现的频率 (3)对结果进行排序 (4)把最后…...
CTF之密码学(费纳姆密码)
一、作为二进制替换密码的费纳姆密码 定义:费纳姆密码是一种由二进制产生的替换密码,也被称为弗纳姆密码(Vernam cipher)。它采用二进制表示法,将明文转化为二进制数字,并通过与密钥进行模2加法运算来产生密…...
postgresql按照年月日统计历史数据
1.按照日 SELECT a.time,COALESCE(b.counts,0) as counts from ( SELECT to_char ( b, YYYY-MM-DD ) AS time FROM generate_series ( to_timestamp ( 2024-06-01, YYYY-MM-DD hh24:mi:ss ), to_timestamp ( 2024-06-30, YYYY-MM-DD hh24:mi:ss ), 1 days ) AS b GROUP BY tim…...
Python 网络爬虫进阶:动态网页爬取与反爬机制应对
在上一篇文章中,我们学习了如何使用 Python 构建一个基本的网络爬虫。然而,在实际应用中,许多网站使用动态内容加载或实现反爬机制来阻止未经授权的抓取。因此,本篇文章将深入探讨以下进阶主题: 如何处理动态加载的网…...
YOLOv11融合PIDNet中的PagFM模块及相关改进思路
YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2…...
使用Python实现自动化邮件通知:当长时程序运行结束时
使用Python实现自动化邮件通知:当长时程序运行结束时 前提声明 本代码仅供学习和研究使用,不得用于商业用途。请确保在合法合规的前提下使用本代码。 目录 引言项目背景项目设置代码分析 导入所需模块定义邮件发送函数发送邮件 实现步骤结语全部代码…...
smb cifs samba smbpasswd 笔记241127
smb cifs samba smbpasswd 笔记241127 SMB、CIFS和Samba都是与文件共享相关的技术,它们在不同的层面上发挥着作用。以下是关于SMB、CIFS和Samba的详细解释: SMB(Server Message Block) 定义:SMB(Server …...
Spring MVC练习(前后端分离开发实例)
White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:二十五弦弹夜月,不胜清怨却飞来🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注Ǵ…...
使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程
有时候我们发现一个好玩的 demo,想赶快在电脑上 pip install 一下跑起来,发现因为 python 的 venv、conda 环境还挺费劲的,因为随着时间的发展,之前记得很清楚的 venv、conda 的用法,不经常使用,半天跑不起…...
英语知识网站开发:Spring Boot框架应用
3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架,JAVA作为开发语…...
Pandas 数据读取与导出
Pandas 是一个强大的 Python 库,用于数据处理和分析。它提供了许多函数来读取和导入数据,支持多种文件格式,如 CSV、Excel、SQL 数据库、JSON 等。以下是一些常用的数据读取和导出方法: 常用方法 格式文件格式读取函数写入&…...
Day49 | 动态规划 :线性DP 判断子序列两个字符串的删除操作
Day49 | 动态规划 :线性DP 判断子序列&&两个字符串的删除操作 动态规划应该如何学习?-CSDN博客 动态规划学习: 1.思考回溯法(深度优先遍历)怎么写 注意要画树形结构图 2.转成记忆化搜索 看哪些地方是重复…...
HDR视频技术之三:色度学与颜色空间
HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到,光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础,但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围,同时也关注于提供更加丰富的色彩。因此ÿ…...
nginx和netcore加载常见的3D模型
背景 数字孪生带火了3D版的Web世界,3D模型格式也是众多,常见的glb适合web传输,fbx,gltf,obj,unity等常用于模型编辑和处理。我们在用netcore或者wasm加载这些3D模型文件时,一般都需要手工增加M…...
ABAP开发学习——标准GUI状态模板的复制
补充一下创建了GUI状态后复制标准状态的方法 首先创建GUI状态 此时按钮全部都是空的 点击顶部的附加-调整模板 选择列表查看器 应用成功,下一步点击激活即可 另外需要注意,功能键中的三个图标的代码并不是习惯性写的”BACK、EXIT、CANCEL",在这个标…...
酷!用豆包MarsCode 写了一个五子棋小游戏
作者:一起重学前端 前言 2017 年,当时大学三本毕业前端工作一年,去深圳找工作面试,在拉勾上海投,接到某公司前端开发团队回复询问邮箱账号,喜滋滋的以为可以有面试了。一看邮箱,抛给我一道面试…...
IntelliJ IDEA 中,自动导包功能
在 IntelliJ IDEA 中,自动导包功能可以极大地提高开发效率,减少手动导入包所带来的繁琐和错误。以下是如何在 IntelliJ IDEA 中设置和使用自动导包功能的详细步骤: 一、设置自动导包 打开 IntelliJ IDEA: 启动 IntelliJ IDEA 并打…...
c#异步编程(async/await)
注:下文摘自ChatGPT,总结与案例都非常完善,可以快速理解并应用 0:使用场景 在winform界面程序中,在ui操作中涉及到一些耗时的等待操作,使用线程自己处理已经显得力不从心,如何能更好的实现&am…...
使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)
使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost) vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例,程序中调用tinyxml2的函数后,若vcpkg中同时存在opencv和…...
cocoscreater3.8.4生成图集并使用
1.安装texturepacker,去官网下载https://www.codeandweb.com/texturepacker 2.将图片拖动进来,即可自动生成精灵表,这里输出选用cocos2d-x,打包用免费版的“基本”就行,高级模式是收费的,然后点击“发布精…...
Ettercap工具使用说明
文章目录 Ettercap 简介Ettercap 的主要功能Ettercap 的安装在 Kali Linux(或基于 Debian 的系统)上安装:在其他操作系统上: Ettercap 的使用方式1. 基本模式2. MITM 攻击ARP 欺骗DNS 欺骗 3. 嗅探模式 常用插件防御建议 Ettercap…...
Linux 如何创建逻辑卷并使用
一、逻辑卷的介绍 生成环境中逻辑卷使用率很高 逻辑卷的诞生:如果对磁盘直接使用fdisk分区,那么这中分区,我们叫做Linux的标准分区,Linux的标准分区格式化成文件系统之后,挂载使用,那么一旦文件系统的空间…...
laravel-operate
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear 1、查看artisan所有命令; php artisan list 2、查看命令描述及参数和选项; php artisan(n.工匠、技工) help migration&…...
探索Python WebSocket新境界:picows库揭秘
文章目录 探索Python WebSocket新境界:picows库揭秘第一部分:背景介绍第二部分:picows库概述第三部分:安装picows库第四部分:简单库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…...
海康VsionMaster学习笔记(学习工具+思路)
一、前言 VisionMaster算法平台集成机器视觉多种算法组件,适用多种应用场景,可快速组合算法,实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀,自带强大的视觉分析工具库,可…...