[TOC]
## 事务处理
形如 MySQL 中的事务处理
```
redis>MULTI #开始事务
redis>命令1
redis>命令2
...
redis>命令N
redis>EXEC #执行命令
```
>[danger]Redis事务并没有回滚功能 需保证键名的规范使用
- WITCH 监控键
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
## key 的时间相关
- 过期时间
```
EXPIRE key seconds
```
- 查看多久过期
```
TTL key
```
如果键不存在 返回 -2 未设置过期时间 则返回 -1
- 取消过期设置
```
PERSIST key
```
## 排序
可以针对列表、集合和有序集合排序
```
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
```
>[info] 集合类型经常被用于存储对象的ID,很多情况下都是整数。Redis对此情况作了特殊优化,元素是有序的。
>[danger] SORT优化:
>1 尽可能减少待排序键中元素的数量
>2 使用LIMIT 参数只获取需要的数据量
>3 如果要排序的数据量较大,尽可能使用 STORE 参数将结果缓存
## 消息通知
- 列表的阻塞式(blocking)弹出
```
BRPOP key [key ...] timeout
```