redis运维相关(基本数据库命令)【十四】
-----------------------------运维相关-------------------------
redis持久化,两种方式
1、rdb快照方式
2、aof日志方式
----------rdb快照------------
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/rdb/
-----------Aof的配置-----------
appendonly no # 是否打开 aof日志功能
appendfsync always #每一个命令都立即同步到aof,安全速度慢
appendfsync everysec
appendfsync no 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof 同步频率低,速度快
no-appendfsync-on-rewrite yes 正在导出rdb快照的时候不要写aof
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
./bin/redis-benchmark -n 20000
---------主从复制----------------
Master配置
1:关闭rdb快照(备份工作交给slave)
2:可以开启aof
slave配置:
1、声明slave-of
2、某一个slave打开rdb快照功能
3、配置是否只读 slave-read-only
4、可选配置密码(内网可不必)
在主服务器配置中修改 requirepass 123456
客户端连上后需要 auth 123456才能访问
但是从服务器已经连不成功master
需要在从服务器配置上 masterauth 123456
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf
pidfile /var/run/redis6380.pid
port 6380
dbfilename dump6380.rdb
dir /var/rdb/
注:每次slave断开后,再次连接master时,都要master全部dump出来rdb再aof,即同步的过程需要重新来一遍
所以要记住,多台slave不要一下都启动起来
-------------redis运维--------------
TIME 查看时间戳与微秒数
127.0.0.1:6379> time
1) "1423329581"
2) "398972"
dbsize 查看当前库中的key数量
bgrewriteaof 后台进程重写aof
bgsave 后台保存rdb快照
save 保存rdb快照
lastsave 上次保存时间
slaveof 设为slave服务器
flushall 清空所有db
flushdb 清空当前db
shutdown save|nosave 断开连接关闭服务器
slowlog显示慢查询
(多慢才算慢? slowlog-log-slower-than 10000)
存多少条? slowlog-max-len 128
查看慢日志 slowlog get
config get slowlog-log-slower-than
config set slowlog-log-slower-than 10
info 显示服务器信息
config get 获取配置信息
config set 设置配置信息
monitor 打开控制台
sync 主从同步
client list 客户端列表
client kill 关闭某个客户端
client setname 为客户端设置名字
client getname 获取客户端名字
-----
如果不小心flushall了
应该首先 shutdown nosave
然后编辑aof
重启
补充:scan 查看key
scan 可以替代 keys ccc* 来查看key, 如果key 过多的情况下,keys * 容易崩溃。scan 提供了分页功能
三个参数: 第一个是cursor 整数值,第二个是key 的正则模式,第三个是遍历的limit hint
例如:
127.0.0.1:6379> scan 0 match com* count 4 1) "0" 2) 1) "compant22" 2) "company" 3) "compant"
补充: redis 集群相关运维
CONFIG GET * # 获取配置信息 CONFIG GET appendonly # 获取具体的某个配置 主从:(需要手动连接到每个节点并查看其角色) INFO REPLICATION # 返回很多信息,包括节点的角色(role:master 或 role:replica),主节点的 IP 地址和端口(对于从节点而言),以及复制偏移量等。 分片: cluster info # 列出集群中的所有节点及其角色、以及分配的插槽信息。但请注意,这个命令只在 Redis 集群模式下有效。 cluster nodes #列出集群中所有节点的信息,包括节点的 ID、IP 地址、端口、状态、分配的插槽信息等 cluster slots # 显示集群中每个槽位(slot)的分配情况。Redis 集群使用 16384 个槽位来存储数据,每个节点负责一部分槽位。
cluster keyslot keyName 得到插槽值
# 查看key 对应的slot
slot计算方式:slot = crc16(key) mod 16384,java 代码: hutool 工具包
CRC16XModem crc16XModem = new CRC16XModem(); crc16XModem.update("task:dataQueue:summaryInfo:DEFAULT".getBytes()); System.out.println(crc16XModem.getValue() % 16384);