الإصدار :
node_redis: ^ 2.8.0
خادم redis: خادم Redis v = 4.0.1 sha = 00000000: 0 malloc = بتات libc = 64 بناء = f37081b32886670b
المنصة :
Node.js v8.3.0
داروين 16.7.0 إصدار Darwin Kernel 16.7.0: الخميس 15 يونيو 17:36:27 PDT 2017 ؛ الجذر: xnu-3789.70.16 ~ 2 / RELEASE_X86_64 x86_64
الوصف :
سينتج set
في 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)
سوف يولد
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
يرجى التحقق من الملف التمهيدي. يجب عليك إضافة "EX" أو "PX" اعتمادًا على نوع المهلة التي تريدها.
شكرا
في حالة وصول أي شخص آخر إلى هذه المشكلة من البحث ولم يتم مساعدته بشكل خاص من خلال ما هو موجود هنا ، فإليك ما ساعدني. كنت أحاول إنشاء مجموعة باستخدام TTL المضمّن: redis.set(key, value, ttl, callback)
، وكان الخطأ في بناء الجملة مشابهًا.
يبدو أنه لا يمكنك إجراء TTL بشكل مضمّن على هذا النحو. بدلاً من ذلك ، قم بإجراء المجموعة الخاصة بك بدون وسيطة TTL ، ثم إذا كنت بحاجة فعلاً إلى تعيين TTL لهذا المفتاح ، فاتبع هذا الطلب باستدعاء redis.ttl()
.
atuttle هذا ليس صحيحًا تمامًا. يقوم Node_redis فقط بنقل الأوامر إلى Redis. ما تريد القيام به هو الإعداد المضمن لـ TTL client.set(key, value,'EX', ttl, callback)
، وفقًا لوثائق الأمر SET .
بالإضافة إلى ذلك ، فإن الأمر client.ttl()
_gets_ الوقت للعيش لا يحدده. إذا كنت تريد أن تفعل ذلك _set_ TTL عليك استخدام client.expire()
.
شكرا على التصحيح.
التعليق الأكثر فائدة
يرجى التحقق من الملف التمهيدي. يجب عليك إضافة "EX" أو "PX" اعتمادًا على نوع المهلة التي تريدها.