redis事务处理

来源:互联网 发布:直播平台软件开发 编辑:程序博客网 时间:2024/06/05 20:51

1、MULTI命令用于开启一个事务,它总是返回OK

MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中

2、EXEC命令被调用时,所有队列中的命令才会被执行

>multi

//OK

>incr foo

//QUEUED

>set t1 1

//QUEUED

>exec

//2

//OK

使用事务时可能会遇上以下两种错误:

1.事务在执行EXEC之前,入队的命令可能会出错,比如产生语法错误,内存不足。。。

2.命令可能在EXEC调用之后失败,比如事务中的命令可能处理了错误类型的键(列表命令用在了字符串键上面)

第一种错误的情况:

服务器端:

2.6.5以前,Redis只执行事务中那些入队成功的命令,而忽略那些入队失败的命令

2.6.5以后,服务器会对入队失败的情况进行记录,并在客户端调用EXEC命令时,拒绝执行并自动放弃这个事务

第二种错误:

即使事务中有某些命令在执行时产生了错误,事务中的其他命令仍然会继续执行

3、DISCARD

事务会被放弃,事务队列会被清空,并且客户端会从事务状态中退出

4、WATCH

可以为Redis事务提供CAS行为,被WATCH的键会被监视,并会发觉这些键是否被改动过。如果有至少一个被监视的键在EXEC执行之前被修改,那么整个事务都会被取消

0 0
原创粉丝点击