Redis支持WATCH/MULTI/EXEC的事务操作(不完全是事务,因为即使有一条命令失败,不会导致全部失败)
当Redis在运行Lua脚本的时候,其它的事情什么都干不了!脚本最好只是简单的扩展Redis进行较小的原子操作和简单的逻辑控制需要,Lua脚本中的bug可能引发整个Redis服务器锁—最好保持脚本的简短和易于调试。
Redis支持WATCH/MULTI/EXEC这样的块,能进行一组操作,也能一起提交执行,看起来与Lua有重叠。应该如何进行选择?
在RedisGreen(译注:国外一家专门提供Redis主机的服务商),我们看到许多应用使用Lua的同时也使用MULTI/EXEC,但两者但不是替代关系。许多成功的Lua脚本都很小,仅仅实现一个你的应用需要而Redis命令中没有单一的功能。
redis提供了一个lua的接口(主要是2个函数,call,pcall),但是在redis中使用lua脚本有诸多限制,主要是为了避免阻塞redis,毕竟redis是单线程,一旦阻塞就什么都不能做了。