Redis 发布订阅和事务
一、发布订阅模式
基本命令:
订阅频道: 可以一次订阅多个
subscribe channel-1 channel-2 channel-3
向指定频道发布消息:
publish channel-1 2673
取消订阅:
unsubscribe channel-1
按规则订阅频道:
消费端1, 关注运动信息:
psubscribe *sport
消费端2, 关注所有新闻:
psubscribe news*
消费端3, 关注天气新闻:
psubscribe news-weather
二、Redis事务
1. 事务特性
1、 按进入队列的顺序执行
2、 不会受到其他客户端的请求的影响
3、 事务不能嵌套, 多个multi命令效果一样
2. 事务命令
multi: 开启事务
exec: 执行事务
discard: 取消事务
watch: 监视key
三、Lua脚本
1. 优点
1、 批量执行命令
2、 原子性
3、 操作集合的复用
2. 命令使用
Redis中执行Lua脚本
redis> eval lua-script key-num [key1 key2 key3 ....] [value1 value2
value3 ....]
- eval代表执行Lua语言的命令
- lua-script代表Lua语言脚本内容
- key-num表示参数中有多少个key, 需要注意的是Redis中key是从1开始的,
如果没有key的参数, 那么写0
- [key1 key2 key3…]是key作为参数传递给Lua语言, 也可以不填, 但是需要
和key-num的个数对应起来
- [value1 value2 value3 ….]这些参数传递给Lua语言
在Lua脚本中执行Redis命令
redis.call(command, key [param1,param2…])
- command是命令, 包括set、 get、 del等
- key是被操作的键
- param1,param2…代表给key的参数
Lua脚本文件
编写操作Redis命令:
redis.call(command, key [param1,param2…])
调用lua脚本:
redis-cli --eval 脚本名称 参数个数 参数1 参数2
缓存Lua脚本
script load 脚本内容
evalsha "摘要值" 参数个数 参数1 参数2……
脚本超时
script kill
shutdown nosave