ruby-on-rails - 在 heroku 应用程序上使用 redis 代替数据库

标签 ruby-on-rails heroku redis

我在 heroku 上部署了一个简单的应用程序。基本上,用户来输入搜索词。我想在页面的一侧添加一个小部分,显示“最近的搜索”。虽然只是为了这个我不想在我的应用程序中添加数据库。我读过有关 redis 的内容,但它可以用来做什么吗?我可以在 Redis 哈希上推送大约 10 个最近的搜索词并检索它们吗?

最佳答案

是的,这是 redis 的一个很好的用例。将搜索词推送到 Redis 列表中,并在您想要显示它们时检索最后十个。您可以定期从列表中删除除最后十个项目之外的所有项目,以避免它变得太大。

像这样将项目添加到列表中(假设 REDIS 是一个 Redis 连接):

REDIS.rpush('searches', 'Xyz')

并像这样检索最后十个:

REDIS.lrange('searches', -10, -1)

(作为副作用,Redis 将首先获取列表的最后一个元素,这可能是您想要的)。 Redis 列表的工作方式类似于 Ruby 数组,负索引表示从末尾开始计数。

要将列表限制为十个元素,您可以使用此命令:

REDIS.ltrim('searches', -10, -1)

您要么在每次推送内容时执行此操作,以确保列表永远不会增长,要么您定期执行此操作。 lrange 操作意味着您只会检索最后 10 个元素,所以这只是一个偏好问题。

关于ruby-on-rails - 在 heroku 应用程序上使用 redis 代替数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578949/

相关文章:

ruby-on-rails - Rails - "heroku db:push"命令失败

node.js - 我的 meern 应用程序无法在 heroku 上运行。我该如何修复这个错误?

ruby-on-rails - 在Ruby中使用 Elasticsearch gem时在哪里指定集群详细信息

ruby-on-rails - 当在rails中使用 'build'命令时,在保存之前,我的zombie.weapons数组中有2个武器,但是zombie.weapons.count = 0

sql - Rails 中同一列的 OR 条件在哪里

caching - 需要通过多键查找持久保存在内存缓存中

architecture - CQRS/事件溯源架构的最佳实践/存储选择

ruby-on-rails - 葡萄救援 Grape::Exceptions::ValidationErrors 不起作用

ruby-on-rails - "heroku run rake db:migrate"命令返回 ETIMEDOUT 错误信息

python - 使用 Heroku 安装 Celery 和 Redis