我在redis中有一个哈希值。它有20个键/值对。我想每小时更新一次并删除旧元素。删除HASH密钥内容并填充新值的最佳方法是什么。由于HASH是API的一部分,因此当我从HASH中删除所有元素时,我不希望引起任何竞争条件。我不想使用EXPIRE
因为我希望控制时间表。
我创建了以下模拟。假设Faker()
是我获取新值的API。我想为HASH添加新值并摆脱旧的值。
import redis
import json
from faker import Faker
try:
r = redis.StrictRedis(host='localhost', port=6379, db=0)
fake = Faker()
for _ in range(20):
userId = fake.uuid4()
user = {"name":fake.name(),"address":fake.address(),"country":fake.country()}
r.hset('users',userId,json.dumps(user))
except Exception as e:
print ('Error',e)
答案 0 :(得分:3)
如何使用DEL
命令删除哈希?您可以将其包装在也设置(HSET
)新值的事务中。
答案 1 :(得分:0)
"删除HASH密钥内容并填充新值的最佳方法是什么。"只是更新它,至少如果你正在更新...所以hset(hash,key,newvalue)或hmset(hash,newvalues_dictionary) - 这种方法有什么不好?