您的位置:首页 > 数据库 > Redis

使用Lua脚本完成高并发下Redis数据修改

2018-01-26 19:11 288 查看
前些天我去面试,面试官问了我一个问题,Redis缓存怎么在高并发情况下保证数据操作的原子性,我当时后懵逼了,于是回来后我就花了点时间想想怎么去完成这个功能.具体怎么实现请接着往下看

在看这篇文章的时候希望大家先对Lua有一个了解
http://blog.csdn.net/mitu405687908/article/details/51137956 http://redisbook.readthedocs.io/en/latest/feature/scripting.html
Redis相关资料
https://www.cnblogs.com/silent2012/p/5368925.html
在Redis中执行Lua脚本
http://blog.csdn.net/mn960mn/article/details/51918886 https://www.cnblogs.com/huangxincheng/p/6230129.html http://blog.csdn.net/u011489043/article/details/78820285
看完了这些,相信大家都对Lua和Redis有一定的了解了吧!接下来我就直接贴代码了,怎么实现Redis在高并发环境下对缓存数据的修改

Lua脚本 



Java代码

设置一个测试值



模拟高并发--开三个线程来对name的值进行修改



这里解释一下listArgs的参数貌似也传递到Lua脚本中了,但是我没有用的listArgs的值,后面再研究研究

线程启动:



输出结果:



上面是结果的一部分,经过我的肉眼仔细排查,结果是完全正确的,意味着我们实现了使用Redis+Lua脚本完成了对并发状态下Redis缓存数据的操作.在没有使用锁的情况下哦!!!!!

使用这种解决方案的项目包括京东的秒杀系统,可以参考http://blog.csdn.net/imxiangzi/article/details/52155451

第一次写这个东西!~纯属分享 大家看看希望有所帮助 我一开始也查了好多好多资料  包括请教了一名远在北京的同学(PS:因为技术的邂逅,哈哈) 

最后 有什么不对的欢迎指出  谢谢 大家 互相学习嘛~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Redis Lua