Redis学习笔记(3)-Redis事务,过期时间,队列

时间:2023-01-02 04:34:37

事务


Redis学习笔记(3)-Redis事务,过期时间,队列

MULTI表示开启事务
然后执行了2个语句
在执行的过程中,他们并没有真正执行,而是挂起。
等到输入EXEC的时候才会真正的执行。
这样保证了事务的特性,要么都执行,要么都不执行。
请注意,Redis的事务并没有事务回滚功能。
若第一行语句成功,第二行语句出错失败,第一行语句的结果任然是执行了的。

过期时间


过期时间的设置能够让Redis将已经存储的数据,到了过期时间后自动删除。

设置key的过期时间

命令:EXPIRE key seconds
key:键
Seconds:过期时间,以秒为单位。
返回值:1表示成功,0表示失败。

查看key将要被删除的剩余时间

命令:TTL key
key:键
返回值:秒,若未设置过期时间,则返回-1,若键不存在则返回-2。
SET命令能取消过期时间的设置。

消息队列


在Redis队列支持的基础上,比如PUSH和POP。
Redis支持阻塞式的拉取数据。
命令:BLPOP与BRPO
阻塞式的左拉或者右拉数据
语法:BLPOP key1 key2 key3
在队列的左边拉取第一个数据。
可以有多个key,优先级key1>key2>key3
返回值:被拉取的数据。

发布订阅模式


发布消息命令

命令:PUBLISH channel message
channel:消息频道名称
message:所发布的消息
返回值:收到消息的订阅者个数
此发布不会被持久化,如果订阅者没有收到,那么这条消息就丢失了。
因此,此功能实现简单的MQ还行,复杂的还是靠ActiveMQ什么的吧。

订阅消息命令

命令:SUBSCRIBE channel1 channel2 channel3…
可以订阅多个消息频道,执行订阅命令后,程序就进入了订阅状态(也就是阻塞等待)。
channel:消息频道名称
返回值:一共有三个返回值
第一个值有三种
Subscribe:表示订阅成功,第二个值是订阅的频道名称,第三个是当前程序订阅的频道数量。
Message:表示接收到的消息,第二个值是订阅的频道名称,第三个是消息的内容。
Unsubscribe:表示成功取消订阅,第二个值是订阅的频道名称,第三个是当前程序订阅的频道数量。

取消订阅命令

命令:SUBSCRIBE channel1 channel2 channel3…