Version :
node_redis: ^ 2.8.0
Redis-Server: Redis-Server v = 4.0.1 sha = 00000000: 0 malloc = libc bits = 64 build = f37081b32886670b
Plattform :
Node.js v8.3.0
Darwin 16.7.0 Darwin Kernel Version 16.7.0: Do 15. Juni 17:36:27 PDT 2017; root: xnu-3789.70.16 ~ 2 / RELEASE_X86_64 x86_64
Beschreibung :
set
führt zu 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)
wird erzeugen
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
Bitte überprüfen Sie die Readme. Sie müssen 'EX' oder 'PX' hinzufügen, je nachdem, welche Art von Zeitüberschreitung Sie möchten.
Vielen Dank
Falls jemand anderes bei einer Suche auf dieses Problem stößt und nicht besonders von dem, was hier ist, unterstützt wird, hat mir Folgendes geholfen. Ich habe versucht, ein Set mit einer Inline-TTL zu erstellen: redis.set(key, value, ttl, callback)
und habe einen ähnlichen Syntaxfehler erhalten.
Es scheint, dass Sie die TTL nicht so inline machen können. Führen Sie stattdessen Ihren Satz ohne das TTL-Argument aus. Wenn Sie dann wirklich eine TTL für diesen Schlüssel festlegen müssen, folgen Sie dieser Anforderung mit einem Aufruf von redis.ttl()
.
@atuttle Das ist nicht ganz richtig. Node_redis leitet die Befehle nur an Redis weiter. Was Sie tun möchten, ist dies für die Inline-Einstellung der TTL client.set(key, value,'EX', ttl, callback)
gemäß der Dokumentation des
Darüber hinaus legt der Befehl client.ttl()
_gets_ die Zeit zum Leben nicht fest. Wenn Sie die TTL einstellen möchten, müssen Sie client.expire()
.
Danke für die Korrektur.
Hilfreichster Kommentar
Bitte überprüfen Sie die Readme. Sie müssen 'EX' oder 'PX' hinzufügen, je nachdem, welche Art von Zeitüberschreitung Sie möchten.