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

前些天我去面试,面试官问了我一个问题,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:因为技术的邂逅,哈哈) 

最后 有什么不对的欢迎指出  谢谢 大家 互相学习嘛~~~

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值