Tag: memcached

在memcached中存储ActiveRecord对象的最佳方法是什么?

目前在memcached中存储ActiveRecord对象存在两个问题。 未定义的类/模块问题( Google搜索 )。 从我读过的内容来看,这仍然是一个没有人有真正好的解决方案的错误。 cache_fu插件可能是最好的解决方案,将其检索调用包装在试图捕获此错误的块中,解析消息并尝试加载未定义的类/模块。 臭名昭着的LH票#1339( LH票 )。 只有在cache_classes设置为FALSE(开发,测试)时才会发生此错误。 谷歌搜索几周后,我仍然没有找到一个很好的技术来存储AR实例在memcached中,而不必处理上面列出的2个问题。 我还没有尝试过的想法是从实例中删除属性作为字符串(只是AR在进行类型转换之前如何从DB接收它们),将它们存储在memcached中然后从缓存中检索,以某种方式实例化AR使用这些值的对象。 这可能吗? 如果是这样,最好的方法是什么? 我只是在寻找其他Rails开发人员解决这个问题的方法。

在Rails 4中禁用缓存摘要

我正在将Rails 3应用程序迁移到Rails 4.迁移过程非常顺利,但我遇到的一个大问题是我的旧Rails 3代码使我的缓存过期无效。 我得到的日志如下: Expire fragment views/localhost:3000/cardsets/36?action_suffix=edityes (0.0ms) … Read fragment views/localhost:3000/cardsets/36?action_suffix=edityes/d8034b6e68ba30b5916a2ebb73b68ffe (0.0ms) 事实certificate这是因为Rails 4带来了一种新的时髦缓存,缓存摘要。 最后一个长hex字符串是Rails想要与此缓存片段关联的某些视图的md5摘要。 我相信我不需要缓存摘要。 我的应用程序很快就会更新,通常我可以在更新时清除缓存,因此引用先前部署版本的一段视图代码的缓存片段的概念是无关紧要的。 我看到我可以使用:skip_digest => true标志修改任何给定的cache调用。 此博客文章提到修改大量cache调用以添加:skip_digest 。 但我相信我想将此标志应用于我的应用程序中的每次cache调用。 当然必须有一些方法来普遍禁用缓存摘要?

如何使用dalli和Rails增加1MB以上的memcache slab大小?

我正在使用Ruby on Rails和dalli gem来使用memcache进行缓存。 默认值(键值存储中的值,即slab)最大大小为1MB。 我想把它增加到2MB。 dalli的文档说: value_max_bytes: The maximum size of a value in memcached. Defaults to 1MB, this can be increased with memcached’s -I parameter. You must also configure Dalli to allow the larger size here. 使用memcached的-I选项,如何指定2MB? 是-I2还是-I2000? (文件不清楚) 对于dalli gem,我有environments/development.rb .rb config.cache_store = :dalli_store 我没有明确提到Dalli :: Client.new那么如何设置value_max_bytes ? 我已经查看了stackoverflow上的相关问题 ,似乎我需要安装rack-cache gem。 这有必要吗? […]

如何使用Dalli更新MemCached中的到期时间?

我正在使用Ruby on Rails(v3.2.13),Dalli(v2.6.4)和MemCached(v1.4.13)。 我像这样缓存: result = Rails.cache.fetch(“test_key”, :expires_in => 1.week) do get_data() # slow call, result of which should be cached end 我想根据数据更新缓存过期日期,因为我的一些数据可以保存更长时间。 现在,以下代码完成了这项工作: if keep_longer(result) Rails.cache.write(“test_key”, result, :expires_in => 6.months) end 我知道MemCached支持“touch”命令,允许更新到期日期而不发送值。 我不知道如何通过Dalligem使用它。 有没有办法更新到期日期而不重新发送结果? 更新: Rails.cache.dalli.touch(‘some_key’, 24.hours) 这应该有效,但对我来说却没有。 对你起作用吗? 这是您可以尝试的小例子。 在IRB中执行以下代码之后 dc = Dalli::Client.new(“localhost:11211”) dc.set(“test_key”, “test_value”, 5.minutes) dc.set( “key”, “value”, 5.minutes) dc.touch( “key”, 10.minutes) […]

通过正则表达式使memcache过期

我在我的rails应用程序中使用memcache。 我想说 使用“foo-123- *”等键过期所有条目 其中*是任何字符串。 当然,没有memcache发行版直接支持这个(对吧?),因为它的构建简单快速,因此它没有索引。 通过保留本地密钥列表,有几个项目可以解决这个问题: https://github.com/defconomicron/dalli-store-extensions https://github.com/jkassemi/memcache-store-extensions 但是将列表保留在内存中…该列表可能会在应用程序实例之间变得不同步……所以它不可靠。 这个问题是以另一种方式解决的吗? 我错过了常见的解决方案吗?

memcache在使用acts_as_cached插件时获取错误的值

我已经安装了memcached gem和acts_as_cached插件。 我的模特很少 class Bike <ActiveRecord :: Base acts_as_cached ………. 结束 class Car <ActiveRecord :: Base acts_as_cached ………. 结束 像这样我有更多的模特 自行车。 get_cache (“key”){Bike.find(…)} 汽车。 get_cache (“key”){Car.find(…)} 即使我维护不同的键,它取出错误的对象而不是必需的对象。

Heroku / Memcache / Rack :: Cache Stats

我试图将我的大脑包裹在Rack :: Cache,Rails 3.2,Memcache和Heroku中。 我想我已经完成了所有工作,如下所述: http : //myownpirateradio.com/2012/01/01/getting-heroku-cedar-and-rails-3-1-asset-pipeline-to-play -nicely在一起/ 总而言之,我不确定Memcached是否真的在做它应该做的事情。 有没有办法在Memcached上获取统计信息或查看Memcached是否缓存了请求? 我将当前时间放在页面上,并且可以看到它正在缓存(标题看起来也很好),但我怎么知道它与Memcached一起使用,而不是文件存储? 谢谢。

轨。 在开发模式下预加载类

在开发模式下预加载Rails模型的正确方法是什么? 背景:Rails 2.2,memcahe as cache store。 当Rails首先在生产模式下启动时,它会预加载并缓存所有模型。 在开发模式下,它使用laizy加载。 这就是为什么我们将任何模型存储到rails缓存中,例如,在app的下一个loadind上的Rails.cache.write(“key”,User.find(0)),当我们尝试执行Rails.cache.read(“key” )memcache fire,即User是未知的类/模块。 在这种情况下,预加载课程的正确方法是什么?

Memcache Stats不使用Rails.cache.stats输出… Rails / Heroku

晚上好, 我正在尝试对Heroku上的Rails应用程序进行一些缓存测试,但Memcachier似乎没有很好地播放…… 我可以从缓存中提取值没有问题,但统计数据并没有给我任何爱… => “42:Quotes:2012-04-16” irb(main):016:0> Rails.cache.exist?(str) => true irb(main):017:0> Rails.cache.read(str) => {“VCE.TO”=>24.76, “XIU.TO”=>17.19, “EWC”=>27.44} irb(main):018:0> Rails.cache.stats => {“mc1.ec2.memcachier.com:11211″=>{}} 如果我可以从缓存中提取信息,那么统计数据中是否应该有一些数据? 我的gemfile中有以下内容: gem ‘dalli’ gem ‘memcachier’ 以下是production.rb: config.action_controller.perform_caching = true config.cache_store = :dalli_store 任何帮助将不胜感激 – 我可以根据需要发布更多细节!

带Memcache的Rails返回错误的缓存对象?

我有一个相当大的Rails应用程序,它在单独的服务器上使用memcached作为其缓存存储。 问题是我在生产环境中随机获取错误,这似乎表明memcached返回了一个不正确的对象。 例子: 在此示例中, current_site是一个帮助方法,它访问Site模型上使用Rails.cache缓存模型的方法 ActionView::TemplateError in ListingsController#edit undefined method `settings’ for # On line #12 of app/views/layouts/site.html.erb 9: 10: 11: 12: 13: <meta name="verify-v1" content="” /> 14: 15: 与…形成对比 ActionView::TemplateError in ApplicationController#not_found undefined method `settings’ for # On line #12 of app/views/layouts/site.html.erb 9: 10: 11: 12: 13: <meta name="verify-v1" content="” /> 14: 15: 两者都应该返回Site模型! […]