老师我想问个问题

来源:16-8 内存优化

旧街深港

2022-04-05

redis事务 就是
MULTI 与 EXEC DISCARD WATCH命令 中 是为了让redis有序执行一组命令 命令之间是相互隔离 遵循单一的 执行前后一致性的问题。 即使某个命令失败也不会导致其他命令回滚。但是能保证整个事务执行过程中 不被其他客户端剥夺和抢占 插入

而且 我们通过lua 脚本也可以满足我们同时执行多条命令不被打断的问题。

并且 Redis中 我们还有popline 这种桶状结构 也可以完成 以上问题的产生。
那么他们之间的区别又是什么呢
而且 比如 在抢购环节 中我们 在redis中使用分布式锁来控制售卖数量 和使用 redis事务控制有什么区别呢 因为事务也是抢占了redis的执行权不被剥夺 分布式锁也是一样的。为什么使用事务就比分布式锁 吞吐量高呢。

写回答

1回答

好帮手慕小蓝

2025-02-10

  • 事务Lua脚本都能保证原子性,但Lua脚本更灵活且性能更高。

  • Pipeline适合批量操作,但不保证原子性。

  • 分布式锁适合需要精确控制资源访问的场景,但性能较低。

  • 在抢购等高并发场景中,使用事务Lua脚本通常比分布式锁吞吐量更高,因为它们避免了锁竞争的开销。

0
0

一站式学习Redis 从入门到高可用分布式实践

Redis课程升级!系统梳理Redis知识体系,掌握redis必备!

2277 学习 · 261 问题

查看课程