Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design Redis数据库设计基础_Database Design_Redis - Fatal编程技术网

Database design Redis数据库设计基础

Database design Redis数据库设计基础,database-design,redis,Database Design,Redis,我已经设计了我的第一个Redis数据库,希望得到一些反馈、建议或提示 概述: 我的redis数据库存储文章,以后可以按喜欢、创建日期、更新日期、作者等进行排序 文章还包含“项目”,我还需要确定哪些文章中至少有1个项目 创作 创建新文章时,我会将其ID写入各个键 ZADD'articles:created'时间戳ArticleID ZADD'articles:updated'时间戳ArticleID ZADD的文章:喜欢“0 ArticleID” SADD'user:USERID:articles

我已经设计了我的第一个Redis数据库,希望得到一些反馈、建议或提示

概述:

我的redis数据库存储文章,以后可以按喜欢、创建日期、更新日期、作者等进行排序

文章还包含“项目”,我还需要确定哪些文章中至少有1个项目

创作

创建新文章时,我会将其ID写入各个键

ZADD'articles:created'时间戳ArticleID

ZADD'articles:updated'时间戳ArticleID

ZADD的文章:喜欢“0 ArticleID”

SADD'user:USERID:articles'ArticleID

每当文章更新时

ZADD'articles:updated'时间戳ArticleID

每当项目添加到项目中时

ZADD'articles:itemCount'itemCount ArticleID

如果一个项目被删除,并且没有项目保留,我只是删除它的成员

ZREM'articles:itemCount'ArticleID

因此,在排序方面,我会做以下工作:

  • 我使用“articles:likes”和“articles:updated”执行ZUNIONSTORE
  • 根据结果,我对结果和“articles:itemCount”执行ZINTERSTORE
  • 因此,我只需执行一个ZREVRANGEBYSCORE
  • 这些都是我想要的,但我对Redis是新手,愿意接受建议和改进

    真诚地


    --詹姆斯我同意你的解决办法

    要改进,请考虑
    事务

    创作

    多重

    ZADD'articles:created'时间戳ArticleID

    ZADD'articles:updated'时间戳ArticleID

    ZADD的文章:喜欢“0 ArticleID”

    SADD'user:USERID:articles'ArticleID

    执行官


    我同意你的解决办法

    要改进,请考虑
    事务

    创作

    多重

    ZADD'articles:created'时间戳ArticleID

    ZADD'articles:updated'时间戳ArticleID

    ZADD的文章:喜欢“0 ArticleID”

    SADD'user:USERID:articles'ArticleID

    执行官


    谢谢你的回复,谢谢你建议多命令,我还有一个后续问题。我想过滤结果的方式越多,我需要为特定目的创建的键就越多,显然每个键只包含一个文章ID和一个分数,目前我们有大约30种不同的过滤方式,来自SQL。这似乎很奇怪,因为每个ID在30个不同的键上重复。简而言之,就是这样做的吗?如果是这样的话,这是否会使redis成为我的需求的一个糟糕的选择。真诚地,--杰姆斯谢谢你的回答,谢谢你建议联合指挥部,我还有一个后续问题。我想过滤结果的方式越多,我需要为特定目的创建的键就越多,显然每个键只包含一个文章ID和一个分数,目前我们有大约30种不同的过滤方式,来自SQL。这似乎很奇怪,因为每个ID在30个不同的键上重复。简而言之,就是这样做的吗?如果是这样的话,这是否会使redis成为我的需求的一个糟糕的选择。真的,詹姆斯