码迷,mamicode.com
首页 > 其他好文 > 详细

Redis的持久化和事务小结

时间:2021-05-24 10:23:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:get   事务   lan   unknown   queue   str   允许   需要   lock   

持久化配置

RDB(Redis DataBase)策略 , redis默认策略

技术图片

AOF(Append Only File)策略

技术图片

小结: 根据需求选择开启持久化策略,一般开启RDB就够了

事务

Redis的事务:允许把一组redis命令放在一起,把命令序列化,然后一起执行,保证部分原子性

multi :用来标记一个事务的开始

exec :用来执行事务队列中所有的命令

127.0.0.1:6379> multi   # 开启事务
OK
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> exec   # 执行事务队列
1) OK
2) OK
127.0.0.1:6379> mget k1 k2  # 查看是否成功设置键值对
1) "v1"
2) "v2"

redis事务只能保证部分原子性

1.如果一组命令中,有压入事务队列过程中发生错误的命令,则本事务中所有命令都不执行,能保证事务的原子性

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set k3 v3
QUEUED
127.0.0.1:6379(TX)> this is error   # 这是故意加的一条错误命令
(error) ERR unknown command `this`, with args beginning with: `is`, `error`, 
127.0.0.1:6379(TX)> set k4 v4
QUEUED
127.0.0.1:6379(TX)> exec     # 执行事务队列失败,因为其中有一条错误命令
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> mget k3 k4
1) (nil)
2) (nil)

2.如果一组命令中,在压入队列过程中正常,但是在执行事务队列命令时发生了错误,则只会影响发生错误的指令,不会影响其他命令的执行,所以不能保证事务的原子性

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set k3 v3
QUEUED
127.0.0.1:6379(TX)> incr k1   # 语法上incr k1并没有错,但是执行时发现k1的值并不是数字,所以不能自增
QUEUED
127.0.0.1:6379(TX)> set k4 v4
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) (integer) 1
3) OK
127.0.0.1:6379> mget k3 k4
1) "v3"
2) "v4"

discard :清除所有已经压入队列中的命令,并且结束整个事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set k5 v5
QUEUED
127.0.0.1:6379(TX)> set k6 v6
QUEUED
127.0.0.1:6379(TX)> discard   # 清除队列命令,结束事务
OK
127.0.0.1:6379> exec
(error) ERR EXEC without MULTI
127.0.0.1:6379> mget k5 k6
1) (nil)
2) (nil)

Redis事务小结:

1、单独的隔离操作:事务中的所有命令都会序列化、顺序地执行。事务在执行过程中,不会被其它客户端发来的命令请求所打断,除非使用watch命令监控某些键。

2、不保证事务的原子性: redis 同一个事务中如果一条命令执行失败,其后的命令仍然可能会被执行,redis 的事务没有回滚。Redis 已经在系统内部进行功能简化,这样可以确保更快的运行速度,因为Redis不需要事务回滚的能力

Redis的持久化和事务小结

标签:get   事务   lan   unknown   queue   str   允许   需要   lock   

原文地址:https://www.cnblogs.com/jiehao-yu/p/14771250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!