6.1pipeline、lua、redis事务区别以及应用场景_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1PV4y1h7Y3/
一、redis事务
原子性:
一旦提交,所有该事务里面所有的命令都会被执行,可能有些命令执行失败,但是剩下的命令依旧会被执行。
个人感觉比MySQL的原子性差了一些。
二、lua脚本
一般我会用lua脚本来代替。
官方默认lua脚本是原子性的,应该是和MySQL的原子行差不多的。
lua脚本的所有命令要么全部执行成功要么全部执行失败。
一般是做一些逻辑比较严密的处理。
阻塞其他redis操作,直到lua脚本完全执行完毕才会执行其他命令。
我认为lua可以执行批量处理
如果lua脚本执行的时间太长,那么要优化下lua脚本,因为lua会阻塞其他操作,所以说lua脚本不适合执行太长时间。
三、pipeline
1、批量处理数据,一次性返回所有结果集。就可以对这个结果集进行处理,考验处理结果集的能力。
一个pipeline的命令集被redis服务器执行的时候,有可能redis服务器会执行其他客户端传来的redis命令。
一些异常情况尽可能发生,所以说使用pipeline一般会做一些异常捕获和处理。
其他的参考以及学习:
https://blog.youkuaiyun.com/ws_please/article/details/131623599
其他类似的文章:
(108条消息) springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库_xin麒的博客-优快云博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库_xin麒的博客-优快云博客
(108条消息) lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合_xin麒的博客-优快云博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库_xin麒的博客-优快云博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis的scan命令获取缓存数据定时更新数据库_xin麒的博客-优快云博客
文章对比了Redis中的事务、Lua脚本和Pipeline的特性。Redis事务具有原子性,但可能在部分命令失败后仍继续执行。Lua脚本提供原子性执行,适合复杂逻辑,但长时间运行会阻塞其他操作。Pipeline用于批量处理,一次性返回结果,但在执行时可能会插入其他命令。建议根据需求选择适当工具,并注意性能优化。

被折叠的 条评论
为什么被折叠?



