Redis篇:事务和lua脚本的使用,我的腾讯Java面试经历分享

本文介绍了Redis的事务机制,强调其无法保证持久性,但具备一致性和隔离性。通过WATCH、MULTI、EXEC命令及Lua脚本实现原子性和隔离性。文中还分享了使用Lua脚本的优点,如减少网络开销和原子操作,并提出了基于Redis的抢红包解决方案,利用集合和列表数据结构以及Lua脚本来保证原子性和隔离性。
摘要由CSDN通过智能技术生成

持久性

  • 如果 redis 没有使用 RDB 或 AOF,事务的持久化是不存在的

  • 使用 RDB 模式,那么在一个事务执行后,而下一次的 RDB 快照还未执行前,如果发生了实例宕机,数据丢失,这种情况下,事务修改的数据也是不能保证持久化

  • AOF 模式,因为 AOF 模式的三种配置选项 no、everysec 和 always 都会存在数据丢失的情况。所以,事务的持久性属性也还是得不到保证

总结

  • redis 的事务机制可以保证一致性和隔离性;但是无法保证持久性;具备了一定的原子性,但不支持回滚

WATCH、EXEC 命令实现 redis 事务


redis> WATCH “map”

OK

redis> MULTI

OK

redis> HSET map “csc” “lwl”

QUEUED

redis> HGET map “csc”

QUEUED

redis> EXEC

  1. OK

  2. “lwl”

复制代码

lua 实现 redis 事务


除了 MULTI、WATCH、EXEC 命令,还有其他的方式可做到 redis 原子性和隔离性吗?有的,lua 脚本;redis 内置了lua的执行环境,并自带了一些 lua 函数库。redis 执行 lua 时,会启动一个伪客户端去执行脚本里的 redis 命令

  • 一致性,原子性ÿ

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值