redis消息模式、事务、慢日志查询、备份恢复
1.redis消息模式
发布消息通常有两种模式分为:队列模式(queuing)和发布订阅模式(publish-subscribe)。
队列模式中,consumers可以同时从服务端读取消息,每个消息只被其中一个consumer读到。
发布订阅模式中消息被广播到所有的consumer中,topic中的消息将被分到组中的一个成员中。同一组中的consumer可以在不同的程序中,也可以在不同的机器上。
订阅发布实例:
subscribe mq1 #客户端
publish mq1 “Redis is a great caching technique”
psubscribe订阅一个或多个符合给定模式的频道
psubscribe news "tech."
publish channel message
将信息message发送到指定的频道channel。返回值代表消费者数量
pubsub channels显示订阅频道
pubsub numsub news 打印各频道订阅者数量
punsubscribe退订多个频道
subscribe订阅给定的一个或多个频道的信息
unsubscribe退订频道
2、Redis事务
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序的执行。
事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
原子性:事务中的命令要么全部被执行,要么全部都不执行。
执行过程:
开始事务
命令入队
执行事务
事务命令:
discard 取消事务,放弃执行事务块内的所有命令
exec 执行所有事务块内的命令
multi 标记一个事务块的开始
watch key [key ...] 监视一个或多个key,如果再事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
unwatch 取消watch命令对所有key的监视
实例:
127.0.0.1:6380> zadd salary 3000 zhangsan 5000 lisi
(integer) 2
127.0.0.1:6380> multi
OK
127.0.0.1:6380> zincrby salary 1000 zhangsan
QUEUED
127.0.0.1:6380> zincrby salary -1000 lisi
QUEUED
127.0.0.1:6380> exec
1) "4000"
2) "4000"
127.0.0.1:6380> zrange salary 0 -1 withscores
1) "lisi"
2) "4000"
3) "zhangsan"
4) "4000"
3.服务器命令
info 查看服务器配置信息
client list 查看当前连接客户端ip及端口
client kill ip:port 关闭客户端ip及端口
config get *
config resetstat 重置统计
config get/set 动态修改
dbsize
flushall 清空所有数据 select 1
flushdb 清空当前库
monitor 监控实时指令
127.0.0.1:6380> monitor
OK
1583403427.636228 [0 127.0.0.1:43648] "set" "name" "123"
1583403432.837921 [0 127.0.0.1:43648] "get" "name"
shutdown 关闭服务器
save 将当前数据保存
slaveof host:port 主从配置
slaveof no one
sync 主从同步
role返回从角色
4、慢日志查询:
slow log是redis用来记录查询执行时间的日志系统
slow log保存在内存里面,读写速度非常快
可以通过改写redis.conf文件或者用config get和config set命令对它们动态的进行修改
slowlog-log-slower-than 10000 超过多少微秒
config set slowlog-log-slower-than 100
config set slowlog-max-len 1000 保存多少慢日志
config get slow* //查询当前慢日志
127.0.0.1:6380> config get slow*
1) "slowlog-log-slower-than"
2) "10000"
3) "slowlog-max-len"
4) "128"
slowlog get
slowlog reset
5.备份数据
config get dir 获取当前目录
save备份(无持久化策略时),生成时在redis当前目录中。
恢复时只需要将dump.rdb放入redis当前目录
127.0.0.1:6380> set name zhangsan
OK
127.0.0.1:6380> save
OK
关闭redis数据库后,备份直接拷贝生成的dump.rdb数据文件即可
还原数据时,将之前备份的dump.rdb数据文件拷贝回数据库数据文件夹,重启数据库即可