开发者学堂课程【Redis 入门到精通(基础篇):数据类型-set 操作随机数据】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/764/detail/13385
数据类型-set 操作随机数据
内容介绍
一、Set类型数据的扩展操作
二、Tips8
一、Set 类型数据的扩展操作
业务场景
每位用户首次使用今日头条时会设置3项爱好的内容,但是后期为了增加用户的活跃度、兴趣点,必须让用户对其他信息类别逐渐产生兴趣,增加客户留存度,如何实现?
业务分析
●系统分析出各个分类的最新或最热点信息条目并组织成set集合
●随机挑选其中部分信息
●配合用户关注信息分类中的热点信息组织成展示的全信息集合
对于现在的信息社会,对应的一些应用,比方说今日头条,微博都是在推送消息,像今日头条里的消息会给到分类,军事、股票、社会、政治、游戏、音乐、综艺等等分了很多类,在初次进入会让你选三个爱好,为了避免信息枯燥,增加客户留存度,就会尝试性去摸索你喜欢的类型,随机推一些,选一些你可能喜欢的,然后就便于增加客户留存度,提高用户黏性,使得app的利益达到最大化。
我们现在研究一下怎样去选择性的给你推送内容,如果说现在关注了三个分类,想让你关注其他的分类,首先先选出今天最热点的消息,然后放到一个set里面,然后随机挑三个,配合之前关注的三个,融合在一起,展示给你,这样就可以让你打开你喜欢的,然后接下来有针对性的去定向推送,就用这种形式来实现,这里面有一个问题,就是怎样随即操作数据我们需要去解决。
解决方案
●随机获取集合中指定数量的数据
srandmember key [count]
●随机获取集合中的某个数据并将该数据移出集合
spop key
二、Tips8
Redis应用于随即推荐类信息检索,例如热点歌单推荐,热卖新闻推荐,热卖旅游线路,应用app推荐,大V推荐等等
这就是随即操作数据的一个结构,这两个有比较大的差别,第一个是从一些集合里面随机挑选一些给你,原集跟数据不变,也就是说50个数据提取出来之后原集还是50个数据,数量不变,第二个则是50个数据提取出6个后剩下44个,他们的应用场景也是不一样的,第一种提取后下次还可以重复使用,第二个则是推过的就不再推了,接下来进行操作。
先进行构造,sadd news n1,sadd news n2,sadd news n3,sadd news n4,初始化四个数据,然后随机取出,srandmember news 1,取出一个n2,再次取出,srandmember news 1,取出n4,然后查看原始数据有没有变化,scard news,原数据还是4个,
接下来多个取出,srandmember news 3,得到n1、n2、n4,这是随机获取,如果说是随机剔除呢,spop news,回车,提取出一个n1,然后查看news,smember news,得到剩余三个数据,然后接下来 spop news 2,提取出两个,分别是n3、n4,那么news就剩下n2了,smember news 得到一个n2,这个可以用作任务的分配以及后面的那一块东西。