Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

कुंजी के अस्तित्व के अनुसार रेडिस में हैश कुंजी की समाप्ति कैसे सेट करें

आप इसे पाइपलाइन के साथ प्राप्त नहीं कर सकते, क्योंकि आप कभी नहीं जानते कि कुंजी तब तक मौजूद है जब तक कि पूरी पाइपलाइन निष्पादित नहीं हो जाती। इसके बजाय, आप काम करने के लिए लुआ स्क्रिप्टिंग का उपयोग कर सकते हैं:

local key = KEYS[1]
local field = ARGV[1]
local value = ARGV[2]
local ttl = ARGV[3]

local exist = redis.call('exists', key)

redis.call('hset', key, field, value)

if exist == 0 then
    redis.call('expire', key, ttl)
end

यह देखने के लिए जांचें कि लुआ स्क्रिप्ट को रेडिस-पीई के साथ कैसे चलाया जाए। फिर RTT . को कम करने के लिए स्क्रिप्ट को पाइपलाइन के साथ चलाएँ ।

अपडेट करें

यदि आप WATCH . का उपयोग करने पर ज़ोर देते हैं काम करने के लिए, आप निम्न कोड आज़मा सकते हैं:

with r.pipeline() as pipe:
    while 1:
        try:
            pipe.watch(hkey)

            exist = pipe.exists(hkey)

            pipe.multi()

            if not exist:
                pipe.hset(hkey, v, v)
                pipe.expire(hkey, 3600)
            else:
                pipe.hset(hkey, v, v)

            pipe.execute()
            break;
        except WatchError:
            continue



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Yii2 को रेडिस कॉन्फ़िगरेशन के साथ कैसे सेटअप करें

  2. रेडिस के साथ सत्रों को संग्रहीत करना कितना सुरक्षित है?

  3. शेल विस्तार के अंदर xargs चर पर sed का उपयोग काम नहीं कर रहा है

  4. रेडिस टेम्प्लेट का उपयोग करके स्कैन करने में सक्षम नहीं

  5. PHP स्क्रिप्ट से रेडिस से कनेक्ट करने का प्रयास करते समय समस्या निवारण अनुमति अस्वीकार कर दी गई