Redis实现用户热词推荐


声明:本文转载自https://my.oschina.net/qixiaobo025/blog/1558244,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

背景

前一段时间实施反馈来了新的需求 用户不希望太多的品牌选择希望做个性化的推荐

比如品牌需要根据登录用户的点击数排序

小伙伴实现了一个版本 【基于数据库】

但是如果换成使用Redis如何实现呢?

首先要做的是选择合适的数据结构

分析

如上需求需要根据不同的用户来使用不同的推荐不同的品牌

可以确定相同的品牌对于同一个用户应该出现一次【使用redis可以减少许多并发问题】

我们考虑对于系统来说 需要进行排序 因此考虑使用有序集合 即zset

我们需要先来设计对应存储的key

我们设计如下的key:

f6car:brand:hot:123456789:qixiaobo

通常来说redis建议使用:来做为key的切分 我们以f6car:brand:hot作为前缀

123456789为对应的idOwnOrg 祁晓波为用户名

当用户对于carzone品牌进行点击时我们执行一个异步请求为

ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone

这个不需要考虑有否初始值 比如我们连续执行多次后结果如下

127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "1" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "2" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "3" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "4" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "5" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "6" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 carzone "7"
127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 f6car "1" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 f6car "2" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 f6car "3" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 f6car "4" 127.0.0.1:6379> ZINCRBY f6car:brand:hot:123456789:qixiaobo 1 f6car "5"

而对于mysql我们需要先查询再插入很容易造成并发问题 出现两个同样的品牌

当我们需要获取对应用户的点击情况只需要

127.0.0.1:6379> ZREVRANGE f6car:brand:hot:123456789:qixiaobo 0 -1 1) "carzone" 2) "f6car"
ZREVRANGE表示按照score从大到小排序

其中-1 表示不限制长度【即全部数据】

当我们需要查询个数的限制时我们可以 

127.0.0.1:6379> ZREVRANGE f6car:brand:hot:123456789:qixiaobo 0 0 1) "carzone"

如果需要返回分数我们也可以使用

127.0.0.1:6379> ZREVRANGE f6car:brand:hot:123456789:qixiaobo 0 0 WITHSCORES 1) "carzone" 2) "7"

如此就简单快捷的完成了品牌推荐

本文发表于2017年10月30日 22:34
(c)注:本文转载自https://my.oschina.net/qixiaobo025/blog/1558244,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2203 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1