Sayangnya tidak ada. "Penampung" Redis (yaitu daftar, hash, set, dan set yang diurutkan) tidak mendukung kedaluwarsa per anggota, meskipun fungsi ini telah diminta berkali-kali sebelumnya.
Anda dapat, bagaimanapun, menerapkan logika Anda sendiri untuk mencapai hasil itu. Ada beberapa kemungkinan pendekatan untuk mengatasi hal ini - inilah salah satu contohnya. Alih-alih menggunakan satu set, gunakan set yang diurutkan (ZSET) dan atur skor setiap anggota ke waktu kedaluwarsanya menggunakan nilai epoch. Jenis alur kerja ini dapat diimplementasikan menggunakan skrip Lua misalnya. Untuk menambahkan anggota gunakan sesuatu seperti:
redis.call('zadd', KEYS[1], os.time()+ARGV[1], ARGV[2])
dan EVAL menggunakan '1 a 60 1' dan '1 a 120 2' sebagai argumen, sesuai contoh Anda. Untuk benar-benar "kedaluwarsa" item dari set, Anda harus menghapusnya setelah waktunya berlalu. Anda dapat melakukannya dengan menerapkan proses berkala yang memindai daftar Anda atau saat mengaksesnya. Sebagai contoh, Lua berikut dapat digunakan untuk member yang kedaluwarsa:
redis.call('zremrangebyscore', KEYS[1], '-inf', os.time())
dan EVAL menggunakan '1 a' sebagai argumen sesuai contoh Anda.
EDIT:Cara mencapai hal di atas menggunakan Python
import time
import redis
def add(r, key, ttl, member):
r.zadd(key, member, int(time.time()+ttl))
def expire(r, key):
r.zremrangebyscore(key, '-inf', int(time.time()))
...
r = redis.Redis()
add(r, 'a', 1, 60)
add(r, 'a', 2, 120)
# periodically or before every operation do
expire(r, 'a')