کمی ردیس رو بگردیم ببینیم چیا داره برامون
فک کنید تعداد زیادی ایتم دارید توش و میخواید اکسپایر تایم همه رو ببرید بالا. یا میخواید پاکشون کنید. فور بزنیم روش؟ هوممم... اره ولی نه اونطوری که تو ذهنتونه
پایپ لاین بزنید . همه رو میریزد توی لوله و یکجا میره روی ردیس اجرا میشه:
with closing(redis_client.pipeline()) as pipe:
keys = redis_client.keys("happy:*')
for key in keys:
pipe.delete(key) #delete
pipe.expire(key, 3600) #expire
pipe.execute()
مورد بعد در مورد گرفتن key و value ها یک جا
خب ردیس اینو نداره ولی میشه با ۲ تا کوعری گرفتش
keys = redis_client.keys("birthday:*)
values = redis_client.mget(keys)
all = dict(zip(keys, values))
یه نکته ای که هست اینه که سعی کنید از اسکنر یا scan_iter استفاده کنید چون keys لاک میکنه ردیس رو. اسکنرا رو میشه بگیم ۱۰ تا ۱۰ تا دیتا رو بگیر که نره یه جا لاک کنه
دومی که همون scan_iter هست راحت تره و کد خوانا تر میشه:
for key in r.scan_iter(count=10,match="bro:*"):
print(key)
درمورد سریع ترین راحت گرفتن ولیو ها:
https://github.com/redis/redis-py/issues/984
اموزش ردیس (فارسی):
https://youtube.com/playlist?list=PLUKW34GJxYOYyPqmZK6ilgosi2VUglOT5&si=s9QLWNwISyAK0g0b