Redis事务和脚本
Contents
事务
事务命令:MULTI 、 EXEC 、 DISCARD 和 WATCH
- MULTI 命令用于开启一个事务,它总是返回 OK
- MULTI 执行之后, 客户端可以继续向服务器发送任意多条命令, 这些命令不会立即被执行, 而是被放到一个队列中
- 当 EXEC命令被调用时, 所有队列中的命令才会被执行。
- 通过调用 DISCARD , 客户端可以清空事务队列, 并放弃执行事务。
Watch的使用
如果在 WATCH 执行之后, EXEC 执行之前, 有其他客户端修改了 mykey 的值, 那么当前客户端的事务就会失败。 程序需要做的, 就是不断重试这个操作, 直到没有发生碰撞为止。
使用无参数的 UNWATCH 命令可以手动取消对所有键的监视。 对于一些需要改动多个键的事务, 有时候程序需要同时对多个键进行加锁, 然后检查这些键的当前值是否符合程序的要求。 当值达不到要求时, 就可以使用 UNWATCH 命令来取消目前对键的监视, 中途放弃这个事务, 并等待事务的下次尝试。WATCH mykeyval = GET mykeyval = val + 1MULTISET mykey $valEXEC
Lua脚本
特点:效率高、有事务控制,支持各种if、for循环等操作
windows环境下 test.lua,然后cd到 执行路径下执行| redis-cli –eval test.lua 2 username age , jack 20 |return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}