redis事务-pipeline-lua三者区别简单概括
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.csdn.net/ws_please/article/details/131623599
其他类似的文章:
(108条消息) springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库_xin麒的博客-CSDN博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库_xin麒的博客-CSDN博客
(108条消息) lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合_xin麒的博客-CSDN博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库_xin麒的博客-CSDN博客
(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis的scan命令获取缓存数据定时更新数据库_xin麒的博客-CSDN博客
(108条消息) redis事务-pipeline-lua三者区别简单概括_xin麒的博客-CSDN博客