gpt4 book ai didi

redis - 在redis中创建结构

转载 作者:可可西里 更新时间:2023-11-01 11:21:25 25 4
gpt4 key购买 nike

在 Redis 中创建以下数据结构。

Users [24: {username: 'test', email: 'test@test.com', used_c: 125, 
posts: [42: {title: 'Hello', posted_at: '2015-05-03'},
43: {title: 'Hello1', posted_at: '2015-05-02'}]}]

一种方法是使用复杂的键:

set users:24 {username: 'test', emai: 'test@test.com', used_c: 125}
set users:24:posts:42 {title: 'Hello', posted_at: '2015-05-03'}
set users:24:posts:43 {title: 'Hello1', posted_at: '2015-05-02'}

但是做上面的事情会限制我很多。

我希望能够获得以下信息:

1. Get users (will list all my users with their data `username, email, used_c`)
2. Get users:24 (will list users data and all the posts)
3. Get posts (will list all the posts)
4. Get posts:42 (will posts data `title, posted_at`)

最佳答案

我建议您以稍微不同的方式存储数据。

  1. 将每个用户保存在哈希中 - user:<uid> ,例如:HMSET user:24 username test email test@test.com used_c 125
    • 要获取所有用户 (1),请使用 SCAN 遍历相关键,即:SCAN 0 user:* .对于返回的每个 key ,执行 HMGET与相关领域。
  2. 您可以通过几种不同的方式存储每个用户的帖子 - 为简单起见(例如,在删除时),使用您存储用户的相同哈希来存储帖子。用户哈希中的每个帖子都将包含两个字段 - 标题和日期:
    HMSET user:24 post:42:title Hello post:42:posted_at 2015-05-03
    HMSET user:24 post:43:title Hello1 post:42:posted_at 2015-05-02

    • 通过组合 HMGET user:24 username email 获取用户的帖子和一个 HSCAN user:24 0 post:*对于帖子本身(很想做一个 HGETALL,但如果有很多帖子可能证明可扩展性较差)。
  3. 保留帖子的索引。索引中的每个条目都是帖子的 ID,它指向相关用户的 ID。您也可以为此使用哈希,例如:HSET posts_to_user 42 24 43 24

    • 获取 HSCAN 的所有帖子宁或HGETALL正在那个领域
  4. 要获取帖子的数据,首先要找到它所属的用户 ID(即 HGET posts_to_user 42),然后从用户的哈希值(HMGET user:23 post:43:title post:43:posted_at)中获取帖子的数据

注意:“正确”选择数据结构取决于您的数据以及您希望如何获取它。在我的回答中,我尝试让事情尽可能简单,但还有其他方法可以做到这一点。例如,帖子可以分别存储在自己的哈希键中,使管理稍微复杂一些,但获得了可扩展性和灵 active OTOH。另一个例子是索引——你可以构建不同的数据和索引,这样帖子的抓取就会更有效率。

关于redis - 在redis中创建结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29602452/

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