我有以下设置来设置和检查redis的值
var ttl = '60';
function someRandom(value, callback){
client.exists(value, function check(err, data){
if(data === 0){
//do functionality
client.set(value,'nx','ex',ttl, function(err,data){
callback(null);
});
}else{
client.incr(value);
callback(null);
}
})
}
现在从上面看,设置值没有问题。根据{{1}}函数,如果值存在,则返回" 1"否则它返回" 0"。但是当我在redis中检查相似的值时,它返回为" 0"什么时候它已经存在
添加更多信息
当我检查第二次尝试的值时, err = null 和 data = 0 ,当它应该是" 1"因为价值已经存在。
同样使用 redis-cli 命令返回1
ioredis配置如下所示
exists
其中senitelname为 mymaster
答案 0 :(得分:0)
我认为你错误地调用redis.set:
client.set(value,'nx','ex',ttl, function(err,data){
callback(null);
});
您可以使用ttl" 60"将键(值为"值")的值设置为' nx',下次为您incr它,因为它不是一个整数,结果是1,ttl小于" 60",如果ttl小于1,键就消失了,这就是你所看到的。
请参阅文档:http://redis.io/commands/set
建议在redis数据库上使用redis-cli命令工具手动运行命令,看看会发生什么。