gpt4 book ai didi

node.js - 获取不到redis数据,但是可以写入redis

转载 作者:可可西里 更新时间:2023-11-01 11:34:16 25 4
gpt4 key购买 nike

我有以下设置来设置和检查来自 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);
}
})

}

现在从上面看,设置值没有问题。根据 exists 函数,如果值存在,则返回“1”,否则返回“0”。但是当我检查 redis 中的相似值时,它在已经存在时返回为“0”。

添加更多信息

当我第二次尝试检查值时,err=nulldata=0,此时它应该是“1”,因为值已经存在。

同样使用 redis-cli 命令返回 1

ioredis 配置如下所示

db0: new Redis({
sentinels: endpoints,
name: REDIS_SENTINEL_MASTER_NAME,
db: 0
}),

db1: new Redis({
sentinels: endpoints,
name: REDIS_SENTINEL_MASTER_NAME,
db: 1
}),


sub: new Redis({
sentinels: endpoints,
name: REDIS_SENTINEL_MASTER_NAME,
db: 0
}),

pub: new Redis({
sentinels: endpoints,
name: REDIS_SENTINEL_MASTER_NAME,
db: 0
})

其中 senitelname 是 mymaster

最佳答案

我认为你调用 redis.set 是错误的:

client.set(value,'nx','ex',ttl, function(err,data){
callback(null);
});

你设置key(value的值)的值为'nx',ttl为60,下次incr时,因为不是整数,结果为1,ttl少小于“60”,如果 ttl 小于 1,则 key 丢失,这是你看到的。

参见文档:http://redis.io/commands/set

建议在你的redis数据库上使用redis-cli命令工具手动运行命令,看看会发生什么。

关于node.js - 获取不到redis数据,但是可以写入redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37554713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com