匹配 key:
1. keys [pattern]
2. scan [cursor] match[pattern] count[num]
相对而言,scan 命令更为高效,异步方式不会造成主线程堵塞
判断 key 存在与设置过期时间
1. setnx key value:如果 key 存在则不操作, key 不存在时执行 set key value
expire key time:设置过期时间,单位为秒
这两个操作都是原子性的,但整体没有原子性
2. set key value [EX second] | [PX milliseconds] [NX|XX]
等于 setnx 与 expire 的结合,实现了整体的原子性
NX: key 不存在时操作
XX: key 存在时操作
异步队列
blpop key[key...] timeout: 阻塞直到队列有消息或超时
pub/sub: 主题订阅模式,无状态,无法保证可达
订阅者:subscribe [频道名]
发送者:publish [频道名][消息]
例:开启三个 Redis 客户端,角色均为订阅者,前两个订阅了同一个频道,第三个订阅了另一个频道
然后再开启一个 Redis 客户端,角色为发布者,向 mychannel 频道发送消息
可以看到,订阅了 mychannel 频道的两个订阅者收到了消息,而另一个订阅者没有收到消息