Node-redis: `ERR syntax error` saat menggunakan set

Dibuat pada 24 Agu 2017  ·  5Komentar  ·  Sumber: NodeRedis/node-redis

  • Versi :
    node_redis: ^ 2.8.0
    redis-server: Redis server v = 4.0.1 sha = 00000000: 0 malloc = libc bits = 64 build = f37081b32886670b

  • Platform :
    Node.js v8.3.0
    Darwin 16.7.0 Versi Kernel Darwin 16.7.0: Kam 15 Jun 17:36:27 PDT 2017; root: xnu-3789.70.16 ~ 2 / RELEASE_X86_64 x86_64

  • Deskripsi :
    set akan menghasilkan 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)

akan menghasilkan

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

Komentar yang paling membantu

Silakan periksa readme tersebut. Anda harus menambahkan 'EX' atau 'PX' tergantung pada jenis batas waktu yang Anda inginkan.

Semua 5 komentar

Silakan periksa readme tersebut. Anda harus menambahkan 'EX' atau 'PX' tergantung pada jenis batas waktu yang Anda inginkan.

Terima kasih

Jika ada orang lain yang mendapatkan masalah ini dari pencarian dan tidak terlalu terbantu oleh apa yang ada di sini, inilah yang membantu saya. Saya mencoba melakukan satu set dengan TTL sebaris: redis.set(key, value, ttl, callback) , dan mendapatkan kesalahan sintaks yang serupa.

Tampaknya Anda tidak dapat melakukan TTL sebaris seperti itu. Sebagai gantinya, lakukan set Anda tanpa argumen TTL, dan kemudian jika Anda benar-benar perlu menyetel TTL untuk kunci itu, ikuti permintaan itu dengan panggilan ke redis.ttl() .

@atuttle Itu kurang tepat. Node_redis hanya menyampaikan perintah ke Redis. Apa yang ingin Anda lakukan adalah ini untuk pengaturan inline dari TTL client.set(key, value,'EX', ttl, callback) , sesuai dokumentasi perintah SET .

Selain itu, perintah client.ttl() _gets_ waktu hidup tidak menyetelnya. Jika Anda ingin melakukannya _set_ TTL Anda harus menggunakan client.expire() .

Terima kasih atas koreksinya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat