目录
一、Redis事务
跳转到目录
Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!
Redis事务没有没有隔离级别的概念!
所有的命令在事务中,并没有直接被执行!只有发起执行命令exec的时候才会执行;
Redis单条命令式保存原子性的,但是事务不保证原子性!
redis的事务:
- 开启事务(
multi
) - 命令入队(…)
- 执行事务(
exec
)
1、 事务的操作
-
没有添加事务的时候
同一个服务器开了两个客户端, 同时操作name, 此时就无法保证name的一致性; -
添加事务
使用MULTI
和EXEC
命令就可以保证事务的一致性;
2、事务的工作流程
3、Watch锁
跳转到目录
watch锁操作
当一个事务执行完后, watch监视锁就会释放掉; 为了演示当修改money的时候事务会执行失败
, 此时还用两个窗口来模拟多线程;
当这个事务还没结束的时候, 修改money;
此时事务就执行失败, 因为 watch一直在监听着money, 如果有别的线程修改该属性, watch就会通知事务, Money被修改, 本次事务就执行失败了!
4、分布式锁
跳转到目录
类似一种同步锁操作, setnx
当key不存在的时候才可以操作;
二、Redis中数据的删除策略
1、过期数据
跳转到目录
如果不删除, 将消耗内存
;
- 定时删除
- 惰性删除
- 定期删除