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
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.
Komentar yang paling membantu
Silakan periksa readme tersebut. Anda harus menambahkan 'EX' atau 'PX' tergantung pada jenis batas waktu yang Anda inginkan.