यह सीधे नहीं किया जा सकता है। आप संपूर्ण रूप से hset पर समाप्ति जोड़ सकते हैं, लेकिन अलग-अलग फ़ील्ड पर नहीं। अगर आप ऐसा करना चाहते हैं, तो आप r.expire('name', time)
. पर कॉल कर सकते हैं , जहां time
समाप्ति तक सेकंड की संख्या है।
एक विकल्प के रूप में, आप set
. का उपयोग कर सकते हैं hset
. के बजाय :
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
यह कुछ कार्यक्षमता को हटा देगा, क्योंकि (उदाहरण के लिए) आपके पास 'नाम:' से शुरू होने वाली सभी कुंजियों को सूचीबद्ध करने का एक अच्छा तरीका नहीं होगा, लेकिन यह आपको स्वतंत्र रूप से कुंजियों के लिए समय सीमा समाप्त करने की सुविधा देगा।
दूसरे विकल्प के रूप में, आप समाप्ति तिथि को hset
. के मानों में सेट कर सकते हैं . इसके लिए क्लाइंट साइड लॉजिक की आवश्यकता होती है, और Redis आपके लिए कोई निष्कासन नहीं करेगा; लेकिन आप कुछ ऐसा कर सकते हैं:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
और फिर यदि आपने कभी ऐसा मान पढ़ा है जिसकी समाप्ति अतीत में है, तो आप इसे कैश मिस मानते हैं। यदि आप स्मृति को मुक्त करने के लिए कुंजियों को समाप्त करने का प्रयास कर रहे हैं, तो यह आपकी मदद नहीं करेगा, लेकिन यदि आपका लक्ष्य किसी प्रकार की शुद्धता के कारण कुंजियों की समय सीमा समाप्त करना है, तो यह आपके लिए काम कर सकता है।