所以我正在寻求构建一个lua脚本,它使用SCAN根据模式查找键并删除它们(原子地).我首先准备了以下脚本
local keys = {};
local done = false;
local cursor = "0"
repeat
local result = redis.call("SCAN", cursor, "match", ARGV[1], "count", ARGV[2])
cursor = result[1];
keys = result[2];
for i, key in ipairs(keys) do
redis.call("DEL", key);
end
if cursor == "0" then
done = true;
end
until done
return true;
Run Code Online (Sandbox Code Playgroud)
哪个会吐回以下"错误:@user_script:9:非确定性命令后不允许写入命令"所以我想了一下,想出了以下脚本:
local all_keys = {};
local keys = {};
local done = false;
local cursor = "0"
repeat
local result = redis.call("SCAN", cursor, "match", ARGV[1], "count", ARGV[2])
cursor = …Run Code Online (Sandbox Code Playgroud) 我一直在节点服务器上使用socket.io为我的网站开发发布功能.在过去一个月左右的时间里,我一直遇到问题,因为套接字连接在运行几天后变得非常缓慢或完全没有响应.服务器没有内存不足.我对调试这类问题并不十分熟悉.
socket.io日志并没有告诉我"websocket connection invalid"或"client not handshaken"客户端应该重新连接'"
我搜索过,最终看到一个线程建议在命令行中运行netstat,并在FIN_WAIT2和CLOSE_WAIT中看到大量连接,并认为这是我的问题的原因.在看了socket.io github上的一些线程后,建议升级到分支0.9.14(我当时运行的是0.9.13).
我已经这样做了,当服务器只连续运行几天时,我仍然有"停机时间".我的网站没有任何接近交通量的地方,这应该是一个问题.
我的日志中出现了一个新的错误(websocket解析器错误:没有操作码10的处理程序),但我的谷歌搜索已经出现问题.我不知道该去哪里解决这个问题,或者我只是在一个红色的鲱鱼之后,真正的问题是你们其中一个人可以帮助我解释一下.
我正在运行node.js v0.10.10并使用socket.io v0.9.14.Linux服务器的硬重启将在100%的时间内解决问题,而重新启动节点服务则不会,这使我相信这是与服务器上的开放套接字相关的问题.