栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Redis Lua脚本实现CAS(检查并设置)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis Lua脚本实现CAS(检查并设置)?

根据Redis的文档,您在原子性方面会没事的:

Redis使用相同的Lua解释器来运行所有命令。另外,Redis保证以原子方式执行脚本:执行脚本时不会执行其他脚本或Redis命令。这种语义类似于MULTI
/ EXEC中的一种。从所有其他客户端的角度来看,脚本的效果还是不可见或已经完成。

但是,如果脚本太慢,则会导致问题。因此,脚本是需要某些逻辑和原子性的轻型操作的最佳选择。

您可能会遇到的另一个漏洞是,如果脚本在中间某种程度上失败了,尽管脚本将返回错误,但您所做的那些调用将无法回滚。

例如:您有一个如下脚本:

redis.call('set', 'foo', 1)redis.call('rpush', 'foo', 2)

脚本执行将返回错误,但

foo
已在Redis中设置为
1


与您的问题无关的事情:我注意到您使用了

eval "your_raw_pre" key_count keys argv

实际上,当您在终端中时,可以在eval中调用lua脚本文件:

> redis-cli eval "$(cat path/to/script/script_name.lua)" key_count keys argv


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号