根据文件:
By default, eval takes a global write lock before evaluating the
JavaScript function.
但是你可以通过一个选项来禁用这个写锁:
Set nolock to true on the eval command to prevent the eval command
from taking the global write lock before evaluating the JavaScript.
但后来我看到了这个警告:
Do not use eval for long running operations as eval blocks all
other operations. Consider using other server side code execution options.
那么,它是什么? eval()是否会暂停所有其他操作?
如果确实如此:为什么你能够禁用“全局写锁”,因为其他任何东西都无法运行?
答案 0 :(得分:1)
默认情况下eval()
采用全局写锁定,阻止所有其他操作。但是,如果您提供nolock
它将不会采用写锁定,因此它不会阻止所有其他操作。但是,即使提供了nolock
,也可以通过eval块中的代码获取全局写锁定。
总的来说,不建议使用eval()
,它不能用于分片,而在最新版本的服务器中,它只能由管理员运行。