redis --- lua 脚本实现原子操作

如题, 楼主的想法很简单, lua 脚本本身支持原子性, 所以把命令写进一个脚本就行, 当然后续还会优化才能放到生产上,例如缓存脚本 ,redis 本身会缓存执行过的脚本 ,这样速度更快, 再优化, 有个专门的redis 来放 缓存的脚本,总之性能优化是多种多样的,满足了业务上的性能需求就好 ,今天先贴个最low 的demo 

redis-cli 命令行

EVAL " local mrest=redis.call('set',KEYS[1],ARGV[1]);redis.call('expire',KEYS[1],ARGV[2]);return mrest;"  1   "rsz"  "zhaoruizhi"  1000

也很好理解这段脚本 ,设置一个值,并设置它的生存时间,这只是个demo ,可能没有什么意义,但是 ,你可以用其他的命令组和,实现一些复杂的有意义的操作哈,

再来看一个带条件判断的 eval "local a=10;if a==10 then return  KEYS[1]   ; else return ARRGV[1] end  "  1 "sssd" "fdfdfd"

返回   "sssd"

我们可以记一下lua的if else 语句   

if a==10 then .....;else ...... end   //分支语句 。lua 不支持switch 语句,所有分支的话就用 if else实现吧 。 优化后续再记。

原文地址:https://www.cnblogs.com/anyehome/p/10243078.html