Redis——Redis事务、watch锁、数据的删除策略

目录


一、Redis事务

跳转到目录
在这里插入图片描述
Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!

Redis事务没有没有隔离级别的概念!
所有的命令在事务中,并没有直接被执行!只有发起执行命令exec的时候才会执行;
Redis单条命令式保存原子性的,但是事务不保证原子性!

redis的事务:

  • 开启事务(multi
  • 命令入队(…)
  • 执行事务(exec

1、 事务的操作

跳转到目录
在这里插入图片描述

  • 没有添加事务的时候
    在这里插入图片描述
    在这里插入图片描述
    同一个服务器开了两个客户端, 同时操作name, 此时就无法保证name的一致性;

  • 添加事务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用MULTIEXEC命令就可以保证事务的一致性;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、事务的工作流程

跳转到目录
在这里插入图片描述

3、Watch锁

跳转到目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
watch锁操作
在这里插入图片描述
在这里插入图片描述
当一个事务执行完后, watch监视锁就会释放掉; 为了演示当修改money的时候事务会执行失败, 此时还用两个窗口来模拟多线程;

当这个事务还没结束的时候, 修改money;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时事务就执行失败, 因为 watch一直在监听着money, 如果有别的线程修改该属性, watch就会通知事务, Money被修改, 本次事务就执行失败了!

在这里插入图片描述

4、分布式锁

跳转到目录
在这里插入图片描述
类似一种同步锁操作, setnx当key不存在的时候才可以操作;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二、Redis中数据的删除策略

跳转到目录

1、过期数据

跳转到目录
在这里插入图片描述
如果不删除, 将消耗内存;

  • 定时删除
  • 惰性删除
  • 定期删除

在这里插入图片描述

1、定时删除

跳转到目录
在这里插入图片描述

2、惰性删除

跳转到目录
在这里插入图片描述

3、定期删除

跳转到目录
在这里插入图片描述
在这里插入图片描述

三种删除策略的对比

在这里插入图片描述

2、逐出算法

跳转到目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37989980/article/details/107449212
今日推荐