Ruby on rails 在Rails应用程序中获取跨会话访问的最新路径

Ruby on rails 在Rails应用程序中获取跨会话访问的最新路径,ruby-on-rails,ruby,activesupport,high-voltage,Ruby On Rails,Ruby,Activesupport,High Voltage,我有一个简单的rails应用程序,没有数据库和控制器。它使用高压路由查询,然后使用javascript使用params散列获取数据 典型的URL如下所示: http://example.com/?id=37ed660aa222e61ebbbc02db 我想获取用户最近访问过的十个独特的URL,并将它们传递给视图。请注意,我说的是用户,最好跨并发会话 有没有办法使用ActiveSupport::Notifications或Production.log检索此信息?任何示例,包括代码最好的位置,都将

我有一个简单的rails应用程序,没有数据库和控制器。它使用高压路由查询,然后使用javascript使用params散列获取数据

典型的URL如下所示:

http://example.com/?id=37ed660aa222e61ebbbc02db
我想获取用户最近访问过的十个独特的URL,并将它们传递给视图。请注意,我说的是用户,最好跨并发会话


有没有办法使用ActiveSupport::Notifications或Production.log检索此信息?任何示例,包括代码最好的位置,都将不胜感激

我认为Redis非常适合这种情况。它是NoSQL键值存储数据库之一,但它对值部分的支持是一个有序的列表、队列等,这使得在访问时可以很容易地在FIFO列表中存储唯一的URL,限制该列表的大小(在列表的“旧”端丢弃URL),并检索最新的N个URL以传递给您的视图。您的列表应该足够小,以便所有内容都留在内存中,并且速度非常快。您可以使用memcached、mongo或其他工具来实现这一点;我认为最好的解决方案是将存储的值保存在内存中


如果您还没有使用redis(或类似产品),那么仅为该功能设置和维护它似乎有些过分。但你也可以通过将其用于缓存、后台作业处理(Resque/Sidekiq)以及你的应用程序中的其他事情来让它自己付费。

谢谢!这是一个很好的线索!我以前从未使用过Redis,但它看起来会奏效!