由于redis并没有类似mysql或者mongo的乐观锁机制,并发控制成了一个棘手的问题
这块是可以用redis的watch来做,但是如果能实现乐观锁,那就非常方便了
redis使用lua的基础语法
1 | > eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second |
lua可以调用的redis函数
1 | redis.call() |
简单例子
1 | local version = redis.call("INCR", KEYS[2]) |
运行方式:1
redis-cli EVAL "$(cat ./helloWorld.lua)" 3 mykey version1 expire 1 1 100
redis并发控制
1 | // SaveAtomic 并发控制save 默认versionExpire为30秒 |