Redis缓存读取性能 - 根键/值对与层次结构?

时间:2016-08-12 22:45:37

标签: performance redis

说我想存储用户偏好...这样简单:

{
    "favoriteColor": "green",
    "bestFriends": [
        "Tom",
        "Jenny",
        "Horton"
    ]
}

什么是在redis缓存中存储的最佳,最高效的方法(针对读取进行了优化)?

想象一下UserId = 123

注意:下面我使用Redis文档表示各种结构的方式。请参阅here

  1. 根目录中的简单,平面,键/值对?

    user-123-favoriteColor = green (this is a STRING type)
    user-123-bestFriends = 1) "bestFriends" (SET TYPE) 2) "Tom" 3) "Jenny" 4) "Horton"

  2. 分层结构(值的哈希值)

    user-123 = 1) "favoriteColor" (STRING type) 2) "green" 3) "bestFriends" (SET TYPE) 4) "Tom" 5) "Jenny" 6) "Horton"

  3. 还有一个相关的问题......有没有理由不在redis和域sql数据库中存储用户首选项?

    还有一个相关问题......将所有用户存储在名为"用户"?

    的一个根密钥下是一个坏主意

2 个答案:

答案 0 :(得分:1)

应优先采用分层结构 这个answer提供了很多解释并帮助了我。

答案 1 :(得分:0)

From the horses mouth

  

尽可能使用哈希
  小散列在非常小的空间中编码,因此您应该尝试每次使用散列来表示数据。例如,如果您在Web应用程序中有表示用户的对象,而不是使用名称,姓氏,电子邮件,密码的不同密钥,请使用包含所有必填字段的单个哈希。   如果您想了解更多相关信息,请阅读下一部分。

所以答案是肯定的,尽可能使用哈希值。

答案here是一个很好的方法。