1.1 生产消费模型
1.1.1 消息模式
- 发布消息通常有两种模式:队列模式(queuing)和发布-订阅模式(pulish-subscribe);队列模式中consumers可以同时从服务端读取消息,每个消息只被期中一个consumer读到。
- 发布-订阅模式中消息被广播到所有的consumer中,topic中的消息将被分发到组中的一个成员中,同一组中的consumer可以在不同的程序中,也可以再不同的机器中。
1.1.2 Redis发布订阅
- Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
- Redis客户端可以订阅任意数量的频道。
1.1.3 订阅发布实例
1.1.3.1 订阅频道
- 在2个客户端终端订阅频道后会一直监视该频道:
10.0.0.103:6379> subscribe rss1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "rss1" 3) (integer) 1
1.1.3.2 发布消息
- 在频道端发布消息:
10.0.0.103:6379> publish rss1 "Redis is a great caching technique" (integer) 2 # 返回值代表订阅该频道的数量
1.1.3.3 查看客户端消息
10.0.0.103:6379> subscribe rss1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "rss1" 3) (integer) 1 1) "message" 2) "rss1" 3) "Redis is a great caching technique"
1.1.3.4 退订频道
10.0.0.103:6379> unsubscribe rss1 1) "unsubscribe" 2) "rss1" 3) (integer) 0
1.1.3.5 显示订阅的频道和订阅频道者的数量
10.0.0.103:6379> pubsub channels 1) "rss1" 10.0.0.103:6379> pubsub numsub rss1 1) "rss1" 2) (integer) 1
1.2 Redis事务
1.2.1 Redis事务说明
- Redis事务可以一次执行多个命令:
- 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。
- 事务在执行的过程中不会被其他客户端发送来的命令请求所打断。
- 原子性:事务中的命令要么全部被执行,要么全部都不执行
- 执行过程:
- 开始事务
- 命令入队
- 执行事务
1.2.2 事务相关命令
discard:取消事务,放弃执行事务块内的所有命令 exec:执行所有事务块内的命令 multi:标记一个事务块的开始 unwatch:取消watch命令对所有key的监视 watch key [key...]:监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
1.2.3 模拟银行转账操作
A账户3000元,B账户5000元,从B账户转1000元给A账户,因为减钱和增钱是同时发生的,所以放入事务中进行:
10.0.0.103:6379> zadd salary 3000 a 5000 b (integer) 2 10.0.0.103:6379> zrange salary 0 -1 WITHSCORES 1) "a" 2) "3000" 3) "b" 4) "5000" 10.0.0.103:6379> multi OK 10.0.0.103:6379> zincrby salary 1000 a QUEUED 10.0.0.103:6379> zincrby salary -1000 b QUEUED 10.0.0.103:6379> exec 1) "4000" 2) "4000" 10.0.0.103:6379> zrange salary 0 -1 WITHSCORES 1) "a" 2) "4000" 3) "b" 4) "4000"
1.3 服务器命令
1.3.1 查看服务器信息
10.0.0.103:6379> info # Server redis_version:4.0.2 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:6d80e3ae847c28b1 ...省略部分输出内容...
1.3.2 查看客户端列表
10.0.0.103:6379> client list id=3 addr=10.0.0.103:50275 fd=9 name= age=1445 idle=803 flags=N db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe id=4 addr=10.0.0.103:50276 fd=10 name= age=1425 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 id=5 addr=10.0.0.103:50277 fd=8 name= age=949 idle=861 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=pubsub
1.3.3 删除客户端
10.0.0.103:6379> client kill 10.0.0.103:50277 OK
1.3.4 其他命令
dbsize # 查看数据库内数据条数 flushall # 清空所有数据 flushdb # 清空当前库 monitor # 监控实时指令 shutdown # 关闭服务器 save # 将当前数据保存
1.4 慢日志查询
slow log是redis用来记录查询执行事件的日志系统,slow log 保存在内存里面,读写速度非常快。可以通过改写redis.conf文件或者用config get和config set 命令对它们动态地进行修改。
1.4.1 查看当前慢日志配置
10.0.0.103:6379> config get slow* 1) "slowlog-log-slower-than" 2) "10000" 3) "slowlog-max-len" 4) "128"
1.4.2 查看慢日志
10.0.0.103:6379> slowlog get (empty list or set)
1.4.3 重置慢日志
10.0.0.103:6379> slowlog reset OK
1.5 数据备份
1.5.1 获取当前目录
10.0.0.103:6379> config get dir 1) "dir" 2) "/root"
1.5.2 备份文件
10.0.0.103:6379> save OK # 生成时在redis当前目录中 [[email protected] ~]# ll -h dump.rdb -rw-r--r-- 1 root root 436 Dec 6 14:16 dump.rdb
1.5.3 保存备份
只要保存dump.rdb文件即可。
1.5.4 恢复备份
只需将dump.rdb放入redis当前目录即可。

我的微信
如果有技术上的问题可以扫一扫我的微信