【问题标题】:Reset value for key in redisredis中key的重置值
【发布时间】:2020-06-15 19:43:15
【问题描述】:

我在redis 中存储了一些值,例如key: 1 的值将是

{"counter":1,"counter1":2}

现在我需要重置 counter 的值,而 counter1 应该保持不变。

要增加计数器,我使用命令 SETEX mykey 60 redis

但它也会重置counter1 的值。那么有什么方法可以为单个键重置一个值。

如果我需要添加更多信息,请告诉我。

【问题讨论】:

    标签: redis


    【解决方案1】:

    您可以使用hash 而不是string,这样会很容易。您可以通过其他值 incrementdelete 计数器等。您的 json 中的每个键都是 hash field

    127.0.0.1:6379> hset mykey counter 1 counter1 2
    (integer) 2
    127.0.0.1:6379> hgetall mykey
    1) "counter"
    2) "1"
    3) "counter1"
    4) "2"
    127.0.0.1:6379> hset mykey counter 25
    (integer) 0
    127.0.0.1:6379> hgetall mykey
    1) "counter"
    2) "25"
    3) "counter1"
    4) "2"
    127.0.0.1:6379> HINCRBY mykey counter 15
    (integer) 40
    127.0.0.1:6379> hgetall mykey
    1) "counter"
    2) "40"
    3) "counter1"
    4) "2"
    127.0.0.1:6379>
    

    【讨论】:

    • 所以如果我使用 SETEX mykey 10 那么两个计数器都会被重置,对吧?如果我是对的,那我该如何避免呢?我只想每 1 分钟重置一次计数器值,而不是 counter1 值。
    • @Soham 你不会使用 setex 你会使用 hset - 我提供的解决方案展示了如何重置单个字段同时保持其他字段相同。
    • 感谢您的回答。但我需要在 1 分钟后重置该值。所以我可以使用 hset 以秒为单位给出一些到期时间吗?
    • @Soham 使用哈希是不可能的(您不能部分使字段过期)-您可以完全使哈希过期。我认为您的问题中有一些误用的术语。但是我提供了这个解决方案,因为“重置”意味着“重置”/将其设置为零,而不是完全“过期”。
    • 对不起,如果我的问题根本不清楚。根据我的问题,你的回答很好,所以我接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2018-04-12
    • 2018-12-06
    • 2017-02-05
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多