跳转至

电商推荐系统如何用 Redis

一、推荐系统数据流

用户行为 → 特征 → 召回 → 排序 → 推荐结果

Redis 在每个环节都有用。

二、用户行为缓存

用户点击、浏览、收藏、加购:

# 用户最近浏览
ZADD rec:recent:{userId} {timestamp} {itemId}
ZREMRANGEBYSCORE rec:recent:{userId} 0 (now - 7days)

# 用户点赞
SADD rec:likes:{userId} {itemId}

三、召回结果缓存

推荐算法召回的候选集(几千个 item)放 Redis:

ZADD rec:candidate:{userId} {score} {itemId}
ZREVRANGE rec:candidate:{userId} 0 100  # 取 Top100

用户刷新时直接拿,不用重新跑算法。

四、物品详情缓存

商品信息、标题、图片:

HSET item:{itemId} title "xxx" img "xxx" price 99

批量取:HMGET item:1 item:2 ...

五、特征存储

用户特征(年龄、性别、等级)、物品特征(类目、价格):

HSET user:feature:{userId} age 25 gender male level 5
HSET item:feature:{itemId} category phone price 3999

六、实时计数

  • 点赞数:HINCRBY item:{itemId} likes +1
  • 浏览数:INCR item:{itemId}:views
  • 热销榜:ZINCRBY hot:daily {itemId} 1

七、去重

推荐过的用户不要再推:

SADD rec:shown:{userId}:{date} {itemId}
SISMEMBER rec:shown:{userId}:{date} {itemId}

八、为什么用 Redis

  • 推荐要快(100ms 内返回)。
  • 数据量大,DB 扛不住高 QPS。
  • 数据结构丰富(ZSet 排序、Set 去重、Hash 存对象)。

九、典型架构

用户请求
Nginx → 推荐服务
Redis(召回候选 + 物品详情 + 用户特征)
排序模型(可选)
返回 Top N

面试要点

推荐系统不是单一 Redis 命令,是数据结构组合:ZSet 做排序、Set 做去重、Hash 做对象、String 做计数。