2016-05-31 2 views
0

У меня есть следующие настройки, чтобы установить и проверить значение от Redisне удается получить Redis данные, но можно написать 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 = нуль и данные = 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

+0

Вам необходимо предоставить более подробную информацию. Что происходит с использованием 'redis-cli', работает ли он нормально? Какие значения вы получаете в 'data'? Вы уверены, что 'node-redis' вернет целое число 0? Это может быть иначе, чем 'cli'. – Russbear

+0

@Russbear жаль, что я не использую node-redis, используя ioredis и используя redis-cli его возвращает 1 для ключа – RRP

+0

Вам нужно больше узнать о том, какие значения вы получаете от 'err' и' data', что CLI дает вам, и как выглядит ваш конфиг 'ioredis'. – Russbear

ответ

0

Я думаю, вы просто неправильно называть redis.set:

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

Вы устанавливаете значение ключа (значение «значение») в «nx», с ttl «60», в следующий раз, когда вы введете его, потому что это не целое число, результат равен 1, а ttl less чем «60», если ttl меньше 1, ключ ушел, это то, что вы видите.

См справка о: http://redis.io/commands/set

Предлагайте выполнить команду вручную с помощью Redis-интерфейса командного инструмента на вашей базе данных Redis, и посмотреть, что произойдет.

Смежные вопросы