1.redis事务特征
事务是所有数据库系统必备的一个功能。redis作为一个键值对数据库自然也不能少了。不过redis为了让事务更加快速与简单。所以redis不提供事务失败回滚的功能。如果一个事务失败了,需要工程师去手动回滚事务。
1.redis事务具有原子性,要么都执行,要么都不执行
2.redis事务过程中不会被打断
3.redis事务不支持失败回滚
4.redis事务中会忽略错误,继续执行错误后面的正确命令
2.redis事务举例
a.使用multi提示redis事务开始。接下来的语句不需要执行之需要缓存到事务执行队列里。
b.需要在事务中执行的命令
c.exec 提示redis开始执行之前缓存的事务。
3.事务demo
可以看出redis事务中的命令是一起执行,一起返回。
有明显错误的事务
事务将不允许提交执行。
4.使用watch避免竞争条件
如果多个用户登录到同一台redis服务器的同一个数据库里面。那么就会产生竞争条件。
例如用户1 set a =1 然后incr a
这时候用户2 也incr a这样最后的结果就是2这就是竞争条件,那么怎么避免呢。就是使用事务和watch 。
可以看到使用watch去监控之后,只要被监控的键对应的值被改变。基于这个键的事务就不回被执行。