gpt4 book ai didi

redis - 在REDIS中获取设置的成员值

转载 作者:行者123 更新时间:2023-12-03 06:44:51 26 4
gpt4 key购买 nike

假设我有3个用户。我将这3个用户存储在Redis中-

SET user1 " 'name': 'a', 'age' : 1 "
SET user2 " 'name': 'b', 'age' : 2 "
SET user3 " 'name': 'c', 'age' : 3 "
  • user1user2是名为group1的组的成员
  • user2user3group2的组成员

  • 如果我使用 SMEMBERS family,那么我只会得到成员(member)列表
    SMEMBERS group1

    1) "user1"
    2) "user2"

    但是我想要那些键的值。我可以使用 hash family,但是如果我使用哈希,我将无法访问 user1而不提及它的组名。我的意思是,如果我想要 user1的值,我必须写 hget group1 user1,但并非总是可能知道组名。

    我真正想要的是更像 MGETSMEMBERS的混合器
    GET user1

    1) " 'name': 'a', 'age' : 1 "

    GET group1

    1) " 'name': 'b', 'age' : 2 "
    2) " 'name': 'c', 'age' : 3 "


    有什么办法吗

    最佳答案

    没有一种内置的数据结构可以解决Redis中的问题。将数据放入一个表并在不同的列上进行查询并不像RDBM那样工作。您需要维护多个键才能实现不同的查询。您可以同时使用hash / set来跟踪用户和组。另一种选择是hash / hash

  • hash / set版本(sets提供组的唯一性)
  • 127.0.0.1:6379> hset user:1 name 'a' age 1
    (integer) 2
    127.0.0.1:6379> hset user:2 name 'b' age 2
    (integer) 2
    127.0.0.1:6379> hset user:3 name 'c' age 3
    (integer) 2
    127.0.0.1:6379> hgetall user:2
    1) "name"
    2) "b"
    3) "age"
    4) "2"
    127.0.0.1:6379> sadd group1 user:1 user:2
    (integer) 2
    127.0.0.1:6379> smembers group1
    1) "user:1"
    2) "user:2"
    127.0.0.1:6379>
  • hash / hash版本(hash fields提供组的唯一性)
  • 127.0.0.1:6379> hset user:1 name 'a' age 1
    (integer) 2
    127.0.0.1:6379> hset user:2 name 'b' age 2
    (integer) 2
    127.0.0.1:6379> hset user:3 name 'c' age 3
    (integer) 2
    127.0.0.1:6379> hset group1 user:1 1 user:2 1
    (integer) 2
    127.0.0.1:6379> hkeys group1
    1) "user:1"
    2) "user:2"
    127.0.0.1:6379>

    关于redis - 在REDIS中获取设置的成员值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62171009/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com