首页 > 解决方案 > 在 Redis 上存储匿名用户的收藏夹

问题描述

我是 Redis 新手并开始使用它。

我有一个 Rails 应用程序,未经身份验证的用户可以将报纸文章作为收藏夹,以便他们以后阅读。到目前为止,我一直在做的是将收藏夹存储在 cookie 中。

但我想用 Redis 达到同样的效果。有命令lset。我不明白这个列表是对每个访问者都是唯一的还是对每个人都是通用的。

标签: ruby-on-railsrubyredis

解决方案


Redis 是一个键值数据库,如果您为每个用户使用相同的键 - 那么列表对每个人都是通用的。唯一性可以通过在密钥中添加一些用户 ID 来实现。

如果您想在用户列表中添加文章 id -RPUSH更合适,因为您不知道文章将在哪个列表索引。

另一个问题是数据过期,因为一旦用户清除了他们的cookies/更改浏览器等,匿名用户的数据就没有用了。在这方面cookie 存储是更优选的。如果您担心 cookie 的大小 - 您可以考虑在客户端使用 localStorage。您也可以使用 rails 的 redis 会话存储——这种方式 cookie 仅包含会话 id,所有数据都进入 redis(rails 会关心它的结构,用户不太可能在您的任务中面临竞争条件)


推荐阅读