问题标签 [dalli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3595 浏览

ruby-on-rails - rails memcached 无法加载此类文件——dalli


我想在 Rails 中使用 memcached。
所以我在本地设置。好的。并部署到我的服务器..出现问题

问题是dalli无法加载到active_support/cache/mem_cache_store.rb..

我的服务器环境:ubuntu / nginx / unicorn / Rails 4 / capistrano 2

unicorn.log (编辑(添加更多日志))


@@@@编辑 START@@@@
添加有关此的信息..

/path/to/shared/bundle/gems/activesupport-4.1.4/lib/activesupport/cache.rb:103-105

在 active_support/cache/mem_cache_store.rb 中需要

@@@@@编辑END@@@@@

这是config/environment/production.rb 和 Gemfile

宝石文件

配置/环境/production.rb

APP_DIR 处的命令“bundle show”(存在 .bundle 文件夹)

和 ls /path/to/shared/bundle/ruby/2.0.0/gems

当然,APP_DIR/.bundle/config 是默认的。

/etc/memcached.conf

在我的服务器上,在 APP_DIR 命令“rails c -e production”中

ps辅助| grep memcached 在我的服务器中

/etc/init.d/unicorn_myapp 重启

但是..服务器rails应用程序不起作用..
@@@编辑开始(添加信息)@@@

在我的服务器中,rails c -e production..

这意味着.. dali 已经是必需的。不是吗?
嗯.. 为什么在 active_support/cache/mem_cache_store.rb 中不需要

@@@编辑结束@@@


但它在我当地的 ubuntu 上运行得很好!本地捆绑安装列表是同一台服务器(除了 gem spring)..

有什么问题??请帮帮我T^T因为这个我疯了..

无论如何..感谢您的阅读!

0 投票
0 回答
590 浏览

ruby-on-rails - 如何清除rails中多个服务器的memcached

我的 Rails 应用程序共享两台服务器,一台用于用户,另一台用于管理员。我为用户界面添加了 dalli-memcached,如果更新任何内容,缓存就会过期,这工作正常。

但我也想从管理服务器中清除缓存。

所以我添加了

在环境文件中,但出现错误

这意味着我提供了错误的地址。我需要提供哪个地址?App_url 还是 ip_address?

两者都试过,但得到同样的错误。

如果有人知道任何其他使用户服务器缓存过期的方法,请告诉我。

0 投票
1 回答
324 浏览

ruby-on-rails - 无法从 Rails 控制台写入 Dalli Store

我在我的 Mac 上使用 Rails 3.2.14、Ruby 2.1.2 和 Memcached 1.4.13。我按照此处所述设置 dalli:https ://github.com/mperham/dalli

不幸的是,尝试 Rails.cache.write(:foo, 1) 返回 false,因此 Rails.cache.read(:foo) 返回 nil。

在我的 Rails 应用程序中正确使用 dalli_store 作为 cache_store 我缺少什么?

0 投票
0 回答
1468 浏览

ruby-on-rails - 在 Rails 中第一次缓存读取时缓存读取速度较慢

我在我的 Rails 应用程序中看到一些非常慢的缓存读取。redis (redis-rails) 和 memcached (dalli) 都产生了相同的结果。

看起来它只是第一次调用 Rails.cache 导致缓慢(平均 500 毫秒)。

我正在使用天窗来检测我的应用程序并看到如下图表:

在此处输入图像描述

我在这段代码中有一个 Rails.cache.fetch 调用,但是当我对其进行基准测试时,我看到它的平均时间约为 8 毫秒,这与 memcache-top 显示的平均调用时间相匹配。

我认为这可能是缓慢打开的 dalli 连接,但基准测试也没有显示任何缓慢。我不知道还有什么要检查的。

有没有人有任何好的技术可以在 Rails 应用程序中跟踪这类事情?

编辑#1

Memcache 服务器存储在 ENV['MEMCACHE_SERVERS'] 中,所有服务器都在 us-east-1 数据中心。

缓存配置如下所示:

我跑了类似的东西:

并计算了平均时间,并在我的一个网络服务器上运行时得到了大约 8 毫秒的时间。

测试我的第一个请求的理论很慢,我在我的 Web 服务器上打开了一个控制台并运行以下命令作为第一个命令。

编辑#2

好的,我将 fetch 拆分为读取和写入,并使用 statsd 独立跟踪它们。看起来平均值与我预期的差不多,但读取的最大时间非常尖锐,达到了 500 毫秒的范围。

http://s16.postimg.org/5xlmihs79/Screen_Shot_2014_12_19_at_6_51_16_PM.png

0 投票
1 回答
248 浏览

ruby-on-rails - Rails:根据查询结果使缓存无效

我在我的 Rails 应用程序中有查询,运行时间不长(~180 毫秒),但确实返回了很多结果。结果在 API 中使用,结果到 JSON 的转换很昂贵(约 3 秒)。为了加快速度,我像这样缓存它:

在后台,可以将新价格添加到数据库中。如何生成缓存键,如果query更改结果,缓存无效?

我正在使用 Rails 3.2,通过dalligem 使用 memcached。

0 投票
1 回答
419 浏览

ruby-on-rails-4 - 为什么 memcached 存储结果后数据库仍然被命中?

我正在使用活动记录进行一些基本查询,并尝试使用dalli gem将结果存储在 memcached 中。

我有以下代码:

'pages/index' 的存储和检索工作正常,但 'pages/index/grid_items' 仍然会导致数据库查询。我的本地主机的以下输出显示了这一点:

我试过使用“包含”而不是“加入”,但没有运气。我还在控制台中检查了 Rails.cache.fetch 的结果,它返回了正确的数据。

0 投票
0 回答
1177 浏览

ruby - 使用 Dalli 列出远程服务器中的所有缓存项

我最近学习了更多有关 Memcached 的知识,以及 Dalli 如何与不同的缓存策略一起使用。我正在尝试通过我们的一个生产级项目远程连接到我们在 heroku 上的 memcachier。通过一些教程,我了解了如何通过 Dalli 远程连接到远程 memcachier。

沙盒.rb:

我确认它在我运行时有效ruby sandbox.rb并且有输出:

我一直在尝试找出如何深入挖掘缓存的键和值。更具体地说:我想至少列出当前使用 Dalli 在 memcached 中的所有键和值。我似乎找不到合适的解决方案。我发现的最佳匹配是这个gist,它可以帮助您在本地获取它。

有什么想法吗?

0 投票
2 回答
2044 浏览

ruby-on-rails - Rails 4.2 片段缓存不起作用

我正在尝试对我网站的静态部分进行分段缓存,但它似乎根本不起作用。我已经设置了config/application.rb以下内容:

在我看来,我有这个:

我的日志中没有看到任何关于将片段保存到缓存或在后续页面加载时检索它的内容。我也尝试过使用默认的 Rails:file_store缓存。我知道缓存存储正在工作,因为使用Rails.cache.fetch工作正常。

我怎样才能让它工作?

0 投票
0 回答
414 浏览

ruby-on-rails-4 - Memcached(Dalli 客户端)- 可能的内存泄漏?赫鲁克?

我试图在我的应用程序中实现低级(模型)缓存。我正在寻求有关处理可能的内存泄漏的帮助。

我有一个“用户”索引页面,我在其中加载了很多用户及其数据(一些问题的答案)。我试图缓存所有这些,因为信息不会经常更改。

我注意到,在每次刷新“用户”页面后,内存占用量不断增长(直到应用程序超时,因为它达到了 heroku 的最大限制)

以下是 heroku 在日志中提供的内存统计信息:

同时我正在监控缓存,似乎没有缓存未命中,所以缓存似乎工作正常。

请注意,bytes_written 继续增长,这是另一个谜。

下面是对应的缓存代码:

用户.rb

Answer.rb (模型)

我不确定此时是否存在内存泄漏。但是,尽管大部分内容都被缓存并从缓存中提供服务,但 Heroku 中的内存使用量似乎一直在上升。

0 投票
0 回答
103 浏览

ruby-on-rails - 如何扩展 Rails 缓存

我尝试向 Dalli 添加新行为,这是我正在使用的缓存存储:

但是我不能让它适用。这是在 application.rb 所需的库文件中。如果它在 'rails/all' 之前运行,则 ActiveSupport 不存在。如果之后应用,好像 Rails.cache 已经被分配了,所以扩展类没有效果。我也尝试手动将 Rails.cache 分配给它的新实例,但它似乎也没有任何效果。

如何使它适用于 Rails.cache?