安全地更新Redis哈希

时间:2018-01-08 12:24:11

标签: python redis

我在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)

2 个答案:

答案 0 :(得分:3)

如何使用DEL命令删除哈希?您可以将其包装在也设置(HSET)新值的事务中。

答案 1 :(得分:0)

"删除HASH密钥内容并填充新值的最佳方法是什么。"只是更新它,至少如果你正在更新...所以hset(hash,key,newvalue)或hmset(hash,newvalues_dictionary) - 这种方法有什么不好?