Node-redis: `ERR-Syntaxfehler` bei Verwendung von set

Erstellt am 24. Aug. 2017  ·  5Kommentare  ·  Quelle: NodeRedis/node-redis

  • 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
question

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.

Alle 5 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

b96705008 picture b96705008  ·  7Kommentare

adamgajzlerowicz picture adamgajzlerowicz  ·  4Kommentare

yuany picture yuany  ·  4Kommentare

id0Sch picture id0Sch  ·  4Kommentare

Stono picture Stono  ·  6Kommentare