- Redis事务
测试思路:
开启redis事务后,执行命令中间出现了错误,查看事务是否回滚?
模拟错误:使用lpop出栈一个String类型数据,lpop只能操作list数据类型。出现错误。
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incrby age 6
QUEUED
127.0.0.1:6379> lpop age
QUEUED
127.0.0.1:6379> decr age
QUEUED
127.0.0.1:6379> decrby age 4
QUEUED
127.0.0.1:6379> exec
1) (integer) 20
2) (integer) 21
3) (integer) 27
4) (error) WRONGTYPE Operation against a key holding the wrong kind of value
5) (integer) 26
6) (integer) 22
127.0.0.1:6379>
回滚
- 开启事务
- 给age自增值
- 回滚
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incrby age 6
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get age
"22"
127.0.0.1:6379>
- Redis持久化
- Rdb持久化
Rdb持久化优点
- rdb持久化文件只有一个文件。读写效率比较高。
- 容错性,数据迁移比较快。
- 启动效率高。
- 性能最大化。持久化fork子进程持久化数据。
Rdb持久化策略:
- save 900 1
- 在900秒,有至少一个key发生变化,就需要持久化。
- save 300 10
- 在300秒,有至少10个key发生了变化,持久化。
- save 60 10000
- 60秒,有10000个key发生了变化,持久化。
Rdb缺点:
- 容错性不是很好
- Fork子进行消耗性能。
注意:rdb是redis默认的持久化方案。
- Aof持久化
Aof持久化优点:
- 该机制可以带来更高的数据安全性,即数据持久性
- redis-check-aof工具来帮助我们解决数据一致性的问题
aof持久化策略:
3种同步策略
即每秒同步
每修改同步
不同步
Aof缺点:
- 持久化文件较多,读写效率不高。
- Aof文件同步策略频率较高,效率比较低。
如果rdb和aof同时存在?
默认使用aof持久化策略。
配置aof持久化:
- 开启aof持久化
- 修改aof持久化同步策略