Version :
node_redis: ^ 2.8.0
serveur redis: serveur Redis v = 4.0.1 sha = 00000000: 0 malloc = libc bits = 64 build = f37081b32886670b
Plateforme :
Node.js v8.3.0
Darwin 16.7.0 Darwin Kernel Version 16.7.0: jeu 15 juin 17:36:27 PDT 2017; racine: xnu-3789.70.16 ~ 2 / RELEASE_X86_64 x86_64
Description :
set
donnera ERR syntax error
:
const redis = require('redis'),
Promise = require('bluebird'),
conf = require(__root_dir + '/conf/conf')
// Promise.promisifyAll(redis.RedisClient.prototype)
// Promise.promisifyAll(redis.Multi.prototype)
const client = redis.createClient(
conf.redis.port,
conf.redis.host)
const key = 'sess-test'
const uid = 1
const ttl = 60 * 60 * 24 * 30
client.set(key, uid, ttl)
va générer
Send localhost:6379 id 0: *4
$3
set
$9
sess-test
$1
1
$7
2592000
Net read localhost:6379 id 0
Error ReplyError: ERR syntax error
Veuillez vérifier le fichier Lisez-moi. Vous devez ajouter «EX» ou «PX» selon le type de délai que vous souhaitez.
Merci
Au cas où quelqu'un d'autre atterrirait sur ce problème à la suite d'une recherche et ne serait pas particulièrement aidé par ce qui est ici, voici ce qui m'a aidé. J'essayais de faire un ensemble avec un TTL en ligne: redis.set(key, value, ttl, callback)
, et j'obtenais une erreur de syntaxe similaire.
Il semble que vous ne pouvez pas faire le TTL en ligne comme ça. Au lieu de cela, faites votre ensemble sans l'argument TTL, puis si vous avez vraiment besoin de définir un TTL pour cette clé, suivez cette demande avec un appel à redis.ttl()
.
@atuttle Ce n'est pas tout à fait vrai. Node_redis transmet simplement les commandes à Redis. Ce que vous voulez faire est ceci pour le réglage en ligne du TTL client.set(key, value,'EX', ttl, callback)
, selon la documentation de la commande SET .
De plus, la commande client.ttl()
_get_ le temps de vivre ne le définit pas. Si vous voulez le faire _set_ le TTL, vous devez utiliser client.expire()
.
Merci pour la correction.
Commentaire le plus utile
Veuillez vérifier le fichier Lisez-moi. Vous devez ajouter «EX» ou «PX» selon le type de délai que vous souhaitez.