小编Bil*_*lly的帖子

使用EVAL,SCAN和DEL的Redis通配符删除脚本返回"非确定性命令后不允许写入命令"

所以我正在寻求构建一个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)

lua redis

13
推荐指数
1
解决办法
6517
查看次数

在节点服务器运行几天后,socket.io变得缓慢且无响应

我一直在节点服务器上使用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%的时间内解决问题,而重新启动节点服务则不会,这使我相信这是与服务器上的开放套接字相关的问题.

websocket node.js socket.io

6
推荐指数
1
解决办法
2618
查看次数

标签 统计

lua ×1

node.js ×1

redis ×1

socket.io ×1

websocket ×1