标签: dalli

Rails.cache.clear某些关键名称?

有可能以某种方式运行Rails.cache.clear并且只清除具有特定名称/字符串的键吗?

我不想清除整个缓存...只是用字符串键blog/post的名称(即blog/post/1,blog/post/2).

我正在使用dalli和memcached作为我的缓存并运行Rails 3.0.6.

memcached caching ruby-on-rails dalli

63
推荐指数
2
解决办法
4万
查看次数

Rails + Dalli memcache gem:DalliError:没有可用的服务器

嗨,我在服务器上设置我的Rails项目时遇到了麻烦,因为apache一直在抱怨

DalliError: No server available.

我安装memcached在我的ubuntu机器上,但它仍然无法正常工作.我的rails项目也在config.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" }environment/production.rb中.我该怎么调试呢?

我的日志显示在每个请求之前:

localhost:11211 failed (count: 6)
DalliError: No server available
Run Code Online (Sandbox Code Playgroud)

telnet到11211:

    root@s2:/usr/local/www/production/current/log# telnet localhost 11211
    Trying 127.0.1.1...
    telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

memcached ruby-on-rails dalli

19
推荐指数
2
解决办法
2万
查看次数

rails 4使用dalli将memcached用作会话存储

我无法使用dalli gem将memcached用作使用rails 4的会话存储.

这就是我所做的.

我将dalli gem添加到Gemfile中

gem 'dalli'
Run Code Online (Sandbox Code Playgroud)

我在config/initializers/session_store.rb中添加了以下行

Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes
Run Code Online (Sandbox Code Playgroud)

我在development.rb中添加了以下行

config.cache_store = :dalli_store
Run Code Online (Sandbox Code Playgroud)

现在当我使用瘦服务器启动我的开发服务器而不启动memcached服务器时,我仍然可以照常登录.我应该得到一些错误,如没有运行memcached服务器或类似的东西.

我不确定rails是否使用memcached作为会话存储.

有人能告诉我在开发环境中使用memcached作为会话存储时我错过了什么?

为了您的信息,我一直在使用devise作为身份验证gem.

谢谢

session memcached dalli ruby-on-rails-4

11
推荐指数
1
解决办法
5649
查看次数

在运行时更改Rails的cache_store?

我的应用程序有一个功能,允许管理员通过 GUI 更改 cache_store 配置。然后新的配置将立即生效。

我的 production.rb 中的默认cache_store:

config.cache_store = :memory_store
Run Code Online (Sandbox Code Playgroud)

管理员可以选择更改为将 memcached 与 Dalli 存储结合使用。我尝试更改 Rails.application.config.cache_store:

Rails.application.config.cache_store = :dalli_store, 'localhost:11211', 'localhost:11212'
Run Code Online (Sandbox Code Playgroud)

但 Rails.cache 没有改变:

Rails.cache
=> <#ActiveSupport::Cache::MemoryStore entries=0, size=0, options={}>
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

memcached ruby-on-rails dalli

6
推荐指数
1
解决办法
1569
查看次数

Rails memcache存储默认的自动过期时间

我一直在苦苦寻找Rails设置的默认过期时间,以防我们在向memcache存储键值对时没有提供任何默认过期时间?例如Rails.cache.write('some-key','some-value')

如果我们没有指定,rails会默认设置一些到期时间吗?

memcached ruby-on-rails dalli

6
推荐指数
2
解决办法
2994
查看次数

Rails.cache.fetch插入额外的值

我们有一个页面显示了我们应用程序的前几组。排行榜的计算成本很高,因此我们将结果缓存一个小时,如下所示:

@groupboard = Rails.cache.fetch("top_groups", :expires_in => 1.hour) do  
  Group.top_groups
end
Run Code Online (Sandbox Code Playgroud)

第一次写入缓存后,这给出了错误。在控制台中四处查看,我看到Group.top_groups返回了一系列如下所示的项目:

[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, 3887]
Run Code Online (Sandbox Code Playgroud)

当我查看从缓存返回的结果时,它看起来如下:

[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, :@new_record_before_save], false, 3887]
Run Code Online (Sandbox Code Playgroud)

有谁知道会导致@new_record_before_save和'false'值插入缓存中该对象的所有条目的原因是什么?

我们正在使用Dalli,Memcached 1.4.9,Rails 3.2.4,Ruby 1.9.2

memcached ruby-on-rails-3 dalli

5
推荐指数
1
解决办法
274
查看次数

如何在测试环境中设置 dalli 缓存?

我将使用 Dalli 缓存作为键值存储。

通常在生产和开发环境中,我们有线路

config.cache_store = :dalli_store
Run Code Online (Sandbox Code Playgroud)

那么我们可以使用Rails.cache构造来读取和写入缓存。

但是通常在测试环境中,我们没有这个配置行。

在测试环境中设置缓存以测试我的存储逻辑的正确方法是什么?

PS我正在使用Linux(Ubuntu)

caching ruby-on-rails dalli

5
推荐指数
1
解决办法
1649
查看次数

如何通过id缓存查找对象

select * from Foo where id = 200
Run Code Online (Sandbox Code Playgroud)

如何通过id缓存查找对象,因为我们观察到一直在某个id上进行select调用.我们应该如何以非突兀的方式在rails中启用它,以便我们可以在将来的任何缓存存储之间切换(比如memcached或redis)

编辑:

与基于Hibernate的缓存策略非常类似, org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE后者适用于Java EE中的所有Entity类.

hibernate ruby-on-rails dalli

5
推荐指数
1
解决办法
2413
查看次数

Rails memcached 无法加载此类文件 -- dalli


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

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

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

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

E, [2014-08-09T10:46:52.306478 #3576] ERROR -- : reaped #<Process::Status: pid 25225 exit 1> worker=1
I, [2014-08-09T10:46:52.306772 #3576]  INFO -- : worker=1 spawning...
I, [2014-08-09T10:46:52.315784 #25228]  INFO -- : worker=1 spawned pid=25228
I, [2014-08-09T10:46:52.316264 #25228]  INFO -- : Refreshing Gem list
You don't have dalli installed in your application. Please add it to your Gemfile and run bundle install …
Run Code Online (Sandbox Code Playgroud)

memcached ruby-on-rails dalli

5
推荐指数
0
解决办法
5583
查看次数

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

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

沙箱.rb:

require 'dalli'

memcachier_server = 'host_name:port'
memcachier_user = 'abc123'
memcachier_password = '1x8w3asdf82jdf'

cache = Dalli::Client.new(memcachier_server,
                                    {
                                        :username => memcachier_user,
                                        :password => memcachier_password,
                                        :failover => true,
                                        :socket_timeout => 1.5,
                                        :socket_failure_delay => 0.2
                                    })

p cache.stat
Run Code Online (Sandbox Code Playgroud)

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

I, [2015-03-17T01:45:20.703729 #42640]  INFO -- : Dalli/SASL authenticating as abc123
I, [2015-03-17T01:45:21.305454 #42640]  INFO -- : Dalli/SASL: abc123
{"xyz.memcacheir.com:11211"=>{"curr_items"=>"24446", "bytes"=>"110738688", "evictions"=>"2586065", "expired"=>"0", "cas_hits"=>"0", "cas_misses"=>"0", "cas_badval"=>"0", "limit_maxbytes"=>"120586239", "total_items"=>"3782835", "bytes_read"=>"1559184266", "bytes_written"=>"33808073647", "curr_connections"=>"5", "total_connections"=>"1098", …
Run Code Online (Sandbox Code Playgroud)

ruby memcached caching heroku dalli

5
推荐指数
0
解决办法
1076
查看次数