当前位置: 首页 > 面试题库 >

Redis结构可按类别存储热门文章

丌官向荣
2023-03-14
问题内容

我正在尝试找出一种方法,可以随着时间的推移在Redis中按类别有效地存储和检索文章的受欢迎程度。现在,我正在考虑这样的解决方案。

创建一堆散列来跟踪文章在所有类别中的受欢迎程度,其中关键是“全部”,年,月或一周的开始,字段是文章ID,其值为计数器。为了更新文章的受欢迎程度,我将使用HINCRBY来增加该文章的计数器

散列为整体流行度:

all: article_id <counter>  // all time popular
2012: article_id <counter> // popular by year
2012-01: article_id <counter>  // popular by month
2012-01-04: article_id <counter>    // popular by week, where the date is the beginning of the week

并为每个类别创建一组哈希,例如以下是“ category_1”的哈希

<category_1>:all: article_id <counter>  // all time popular
<category_1>:2012: article_id <counter> // popular by year
<category_1>:2012-01: article_id <counter>  // popular by month
<category_1>:2012-01-04: article_id <counter>   // popular by week, where the date is the beginning of the week

另一组“ category_2”

<category_2>:all: article_id <counter>  // all time popular
<category_2>:2012: article_id <counter> // popular by year
<category_2>:2012-01: article_id <counter>  // popular by month
<category_2>:2012-01-04: article_id <counter>   // popular by week, where the date is the beginning of the week

因此,每当文章的知名度上升时,我都会增加两组哈希,一组用于总体,另一组用于该文章所属的类别。我还没有弄清楚如何检索最受欢迎的文章(始终,每年等),甚至不确定是否可以使用“哈希”数据类型。

哈希是正确的数据结构吗?关于如何为此解决方案建模的任何想法都将有所帮助。


问题答案:

我认为您正在研究使用排序集而不是哈希。基本上,使用article_id作为成员,并使用人气作为得分。保留每个时间分辨率和类别排列的排序集-
就像您用哈希描述的一样。这将允许您使用简单的ZRANGEBYSCORE按受欢迎程度(得分)来获取文章(集合成员)。要更新流行度,请执行ZINCRBY。



 类似资料:
  • 假设inventory文件为/etc/ansible/hosts,那么相关的hosts和group变量可以放在下面的目录结构下 /etc/ansible/group_vars/raleigh # can optionally end in '.yml', '.yaml', or '.json' /etc/ansible/group_vars/webservers /etc/ansible/host

  • 每条链有独立的数据存储文件 每个智能合约都独立的数据存储空间 每个智能合约可以创建多个数据表

  • 主要内容:图存储结构基本常识,图存储结构的分类我们知道,数据之间的关系有 3 种,分别是 "一对一"、"一对多" 和 "多对多",前两种关系的数据可分别用 线性表和树结构存储,本节学习存储具有"多对多"逻辑关系数据的结构—— 图存储结构。 图 1 图存储结构示意图 图 1 所示为存储 V1、V2、V3、V4 的图结构,从图中可以清楚的看出数据之间具有的"多对多"关系。例如,V1 与 V4 和 V2 建立着联系,V4 与 V1 和 V3 建立着

  • 主要内容:树的结点,子树和空树,结点的度和层次,有序树和无序树,森林,树的表示方法,总结之前介绍的所有的 数据结构都是 线性存储结构。本章所介绍的树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。                                                                          (A)                                                          

  • 在Redis中创建键时,我使用“:”格式,并将其与URL结构类似地处理。 但如果该结构本身包含键-值类型组合呢?有人把钥匙放在结构里吗? 虚构示例: 在某些方面,我认为选项A的结构中有力量,但也给关键增加了很多复杂性。 想法?

  • 热门文章 <!--获取最热的5条文章--> <php>$hot_articles=sp_sql_posts("cid:$portal_index_lastnews;field:post_title,post_excerpt,object_id,term_id,smeta;order:post_hits desc;limit:5;"); </php> <ul class="unstyled"> <