Redis数据类型求数据交集

求两个数据的交集:使用Set数据类型的intersect方法即可实现。

Feed流提供关注推送的思想

Feed流顾名思义就是把信息流喂养给用户。、

而喂养的方式分为三种。

一种是主动喂养(又称为推模式,又叫做写扩散)这种方式是信息源把所有人全部推送一遍

优势是:可以时效高,可以不用临时拉取。

劣势是:内存占用过高,需要推送一份数据到很多的地方

第二种是被动被获取(又称为拉模式,又叫做读扩散)这种方式就是如果想要信息的人自己到信息源去拉。、

优势是:比较节省空间,当一个用户处理完信息即可删除。

劣势是:当多个用户同时需要拉取大量的信息时,会对服务器产生大量的压力。

第三种是拉推兼得的模式

这种模式是在当你的信息源不需要向很多用户都推送的话,就采用推模式。

当你的信息源向很多人进行推送的时候,你就可以对活跃的用户进行推模式,对不活跃的用户进行拉模式。

这种模式能够充分利用前面两种方式的优点,一般推荐第三种。

Redis来实现动态分页查询

为什么需要动态分页查询:

在Feed流中的数据会不断更新,所以在数据的角标也会不断变化,和微信的聊天聊天记录是一样的逻辑,所以传统的分页查询方式是不可行的。

动态分页查询的两个参数:

一个参数是时间戳(记录上次的时间戳)

一个参数是offset(偏移量)。

而为什么有了时间戳还需要偏移量呢?

因为对于一个时间戳可能对应多条数据,所以需要偏移量来确定上次的最后一条记录。

数据可以使用Redis的SortedSet来实现时间戳的单调性。

同时可以使用SortedSet的reverseRangeByScoreWithScores函数来实现返回指定分数范围内的成员列表,按照分数从高到低进行排序,并可以实现跳过多少条数据和取多少条数据的功能。、

Java8的Stream流功能

stream流提供了很多库函数对于数据进行处理,如map(可以把每一个元素映射成其他形式),filter等等。

 

 posted on 2025-06-28 23:53  熙玺  阅读(9)  评论(0)    收藏  举报

Shu-How Zの小窝

Loading...