redis实战(5):对文章进行分组 朴灿烈づ我的快乐病毒、 2022-11-08 11:56 91阅读 0赞 > 群组功能有两个部分组成,一个不是负责记录文章属于哪个群组,另外一个部分负责取出群组内的文章; ### 1 从群组中添加/删除文章 ### 为了记录各个群组都保存了哪些文章,需要为每个群组创建一个集合,将所属同一个群组的文章ID保存到该集合 def add_remove_groups(conn,article_id,to_add=[],to_remove[]){ article = "article:"+article_id for group in to_add conn.sadd("group:"+group,article) for group in to_remove conn.srem("group:"+group,article) } 出看上起,可能觉得使用集合来记录群组文章没有多大用处。到目前为止,只看到集合结构检查某个元素是否存在的能力,但是实际上redis不仅可以对多个集合执行操作,甚至在一些情况下,可以在集合和有序集合之间操作; 为了能够根据评分对群组文章进行排序和分页,网站需要将同一个群组里的所有文章都按照评分有序的存储到zset中,redis的zinterstore可以接受多个集合和多个zset作为输入,找出交集。 ### 2 从群组中获取文章 ### 通过对存储群组文章的集合和存储文章评分的有序集合执行 zinterstore命令,程序可以得到按照文章评分排序的群组文章;而通过对存储群组文章的集合和存储文章发布时间的有序集合执行zinterstore命令,程序则可以得到按照文章发布时间排序的群组文章。如果群组包含的文章非常多,那么执行zinterstore 命令就会比较花时间,为了尽址减少 Redis 的工作址,程序会将这个命令的计算结果缓存 60 秒另外,我们还重用了已有的 get\_articles()函数来分页并获取群组文章. def get_group_articles(conn,group,page,order=-score:"){ key = orider = group if not conn.exists(key) conn,zinterstore(key,["group:"+group,order], aggregate="max",) conn.expire(key,60) return get_articles(conn,page,key) } 有的网站只允许用户将文章放在一个或者两个群组中,在这种情况下,最好直接将文章所在的群组记录到存储文章信息的hash中,并在article\_vote()函数末尾增加一个zincrby的命令调用,用于更新文章所在群组中的评分。
相关 Java 8 Stream API实战:对一组数据进行过滤、排序和分组 在Java 8引入的Stream API中,我们可以对一组数据进行多种操作,包括过滤(filter)、排序(sorted)和分组(groupingBy)等。 1. **过滤* 曾经终败给现在/ 2024年09月11日 09:15/ 0 赞/ 20 阅读
相关 redis实战(5):对文章进行分组 > 群组功能有两个部分组成,一个不是负责记录文章属于哪个群组,另外一个部分负责取出群组内的文章; 1 从群组中添加/删除文章 为了记录各个群组都保存了哪些文章,需要为每 朴灿烈づ我的快乐病毒、/ 2022年11月08日 11:56/ 0 赞/ 92 阅读
相关 redis实战(3):对文章进行投票 > 实战系列都是需求+伪代码; 1 需求 > 如果一个文章获得200+票(up vote),则是一篇有趣的文章;假如每天发布1k文章,其中50篇是有趣的文章,则把这50 曾经终败给现在/ 2022年11月07日 11:57/ 0 赞/ 127 阅读
相关 java 动态分组map_使用java 8按任意间隔对Map进行分组 使用 TreeSet.ceiling()查找“组”边界值. 例 TreeSet groups = new TreeSet<>(); groups.add( 5d); / 青旅半醒/ 2022年10月23日 05:58/ 0 赞/ 260 阅读
相关 Java对Collections进行分组 在批量处理数据的时候,想对一批数据(`List<Object>`)分组操作咋办,有什么简便的方法吗? 准备一点数据: public class User { 爱被打了一巴掌/ 2022年06月08日 05:22/ 0 赞/ 158 阅读
相关 使用spring-data-redis对redis进行操作 前面介绍了Redis的安装配置,今天我将介绍通过spring-data-redis实现java程序对redis进行操作。对于redis的介绍我就不细说,在我们写程序的时候就是要 布满荆棘的人生/ 2022年05月09日 08:40/ 0 赞/ 189 阅读
相关 Elasticsearch多字段分组聚合, 并对分组聚合的count进行筛选 前提 假设我们的文档包括以下几个字段 : activityId, clientIp, orderNumber 目标 依据activityId(策略ID) + clie 墨蓝/ 2022年04月15日 05:56/ 0 赞/ 1643 阅读
相关 Oracle DB 对行进行分组-group by having 分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来![https://blog.csdn.net/jiangjuns 怼烎@/ 2022年03月17日 09:28/ 0 赞/ 127 阅读
相关 MYSQL GROUP BY 对多个字段进行分组 [https://segmentfault.com/a/1190000006821331][https_segmentfault.com_a_1190000006821331] ╰半橙微兮°/ 2021年09月17日 00:36/ 0 赞/ 1264 阅读
还没有评论,来说两句吧...