Redis学习---03

一、redis事务

(1) Redis单条命令保证原子性,但事务不保证原子性

Redis 事务不是严格意义上的事务,只是用于帮助用户在一个步骤中执行多个命令。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

(2) Redis没有隔离性的概念,只有发起执行命令的时候才会执行。

(3) 一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

(4) 事务执行命令:

MULTI、EXEC、DISCARD、WATCH 这四个指令构成了 redis 事务处理的基础。

  1. MULTI 用来组装一个事务;
  2. EXEC 用来执行一个事务;
  3. DISCARD 用来取消一个事务;
  4. WATCH 用来监视一些 key,一旦这些 key 在事务执行之前被改变,则取消事务的执行。

(5) 事务异常:

有关事务,大家经常会遇到的是两类错误:(1)语法错误(2)运行时错误,操作错误 1 / 0

  1. 调用 EXEC 之前的错误
  2. 调用 EXEC 之后的错误

单条命令错误,不会影响整体的操作;这就是redis不保证原子性。、

(6):redis==>乐观锁

悲观锁:认为什么时候都会出问题,什么时候都会加锁;

乐观锁:认为什么时候都不会出现问题,所以不会加锁;

watch:加锁;

unwatch:解锁

1) Redis使用watch去监控,一旦有其他的线程修改当前的变量,就会导致,事务操作失败!

2) Java中数据库使用version进行监控!  实现乐观锁!

3) 事务提交失败后,先解锁(unwatch)再获取最新的值,然后进行加锁(watch)。

二、Jedis(在SpringBoot2.0以上的版本弃用了);

(1)依赖:(后补)

Jedis  jedis =new Jedis('ip',端口)

(2) 测试

(3) 开启事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值