redis事务

MYSQL事务:目的为保证数据完整性,安全

redis-事务:目的是为了保证redis语句的批量化执行

redis事务:

事务执行期间,Redis不会为其他客户端的请求提供任何服务

在redis事务中,如果某条命令执行失败了,其余的命令依然会被继续执行


【命令】

1.multi :开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,知道执行EXEC时,这些命令才会被院子的执行,类似于关系型数据库中的:begin transaction(开启队列)

2.exec :提交事务,类似于关系型数据库中的:commit (执行批量化语句)

3.discard :事务回滚,类似于关系型数据库中的rollback (不执行批量化语句)

实际操作

清空数据库内容后 执行multi


可以看到set username zhangsan 进入了队列,而没有被执行


get username 依旧没有执行 也加入了队列

此时队列的内容是:(multi:)

set username zhangsan

get username

我们输入exec 可以看到命令依次执行了


下面的命令测试一下discard,multi开启批量化事务,一条set,一条get进入队列,执行discard后,相当于这两个语句直接不被执行



下面的语句测试redis的事务,在某一条语句报错的情况下,依旧继续执行



由于username为字符串,所以incr username 肯定会报错

但我们可以看到 报错下面的语句 set username lisi 执行了

所以由此可见,redis的数据不是为了保证数据的安全,而是为了保证命令的批量化执行

猜你喜欢

转载自blog.csdn.net/luo_yu_1106/article/details/80049495