四、事务
Redis中的事务是一组命令的集合。事务同命令一样都是Redis的最小执行单位,一个事务的命令要么全部执行,要么全部不执行。
事务的原理是先将一个事务的命令发给Redis,然后再让Redis依次执行这些命令。
需要注意的是Redis并没有提过像关系型数据库那样的回滚功能!不过由于Redis不支持回滚,这也使得Redis在事务上的开发更简洁快速。
语法:
MULTI //这里是通知Redis将要进入事务操作,并将语句存储在事务队列里
执行语句
EXEC //真正的开始执行事务语句
4.1 WATCH命令
WATCH命令可以监控一个或多个键,一旦其中有一个 键被修改或删除,其后的事务就不会执行。监控一直持续到EXEC命令。
4.2 生存时间
在Redis中可以使用EXPIRE命令设置一个键的生存时间,到时间后Redis会自动删除它。
语法:EXPIRE key seconds //seconds表示键的生存时间,单位是秒。命令返回1表示设置成功,返回0则表示键不存在或设置失败。
TTL key //以秒为单位返回键的剩余时间
若想取消键的生存时间可以使用PERSIST key 或者 使用SET/GETSET命令为键重新赋值也会取消键的生存时间。
当重新调用EXPIRE命令时会重新设置键的生存时间。
EXPIRE key 1 = PEXPIRE 1000 //这两个等价,PEXPIERE以毫秒为单位
注意:若某一有生存时间的键被WATCH命令监视,当该键时间到期自动删除时并不会被WATCH认为该键被改变。
4.3 SORT命令
SORT命令可以对列表类型、集合类型和有序集合类型键进行排序。
SORT key //从小到大排序
SORT key DESC //从大到小排序
分页排序:
SORT key DESC LIMIT offset count //表示跳过offset个元素并获取之后的count个元素
4.5 管道
客户端和Redis使用TCP协议连接。不管是客户端向Redis发送请求还是Redis向客户端响应信息,都是通过网络传输进行的,这两个部分的总耗时称为往返时延。
通过管道客户端一次性将信息发出,然后Redis一次性将信息结果返回,管道通过减少客户端与Redis的交互次数来缩短往返时延。