0

私は長い間グーグルで検索してきましたが、まだ解決策が見つかりません。Rails 3.2 と Dalli gem を memcached 1.4.14 で使用しています。

Dalli/Memcached をセッション ストアとして使用したいのですが、その方法がわかりません。現在、Dalli キャッシュは従来のキャッシュのように機能しますが、セッション キャッシュとは異なります。新しい Rails アプリを作成し、Dalli を Gemfile に追加しました。

gem 'dalli'

開発環境と本番環境では、Dalli をキャッシュ ストアとして設定します。

config.cache_store = :dalli_store

これは の内容ですinitializers/session_store.rb:

require 'action_dispatch/middleware/session/dalli_store'
Rails.application.config.session_store :dalli_store, :memcache_server => ['127.0.0.1'], :namespace => 'sessions', :key => '_session', :expire_after => 30.minutes

Myoooインスタンスをリストして作成するメソッドに追加したモデルを作成します。

def self.index_c
a = Rails.cache.read(:myooo_index)
if a.nil?
    puts '--->>> load again'
    a = Rails.cache.write(:myooo_index, Myooo.all, expires_in: 5.seconds)
else
    puts '--->>> using cache'
end
return Rails.cache.read(:myooo_index)
end

def self.create_c(myooo_object)
a = Rails.cache.read(:myooo_create)
if a.nil?
    a = Rails.cache.write(:myooo_create, myooo_object, expires_in: 10.minutes)          
end
return Rails.cache.read(:myooo_create)
end

コントローラーでは、キャッシュにアクセスしようとします。インデックス アクションで:

@myooos = Myooo.index_c

そして作成アクションで:

@myooo = Myooo.new(params[:myooo])
Myooo.create_c(@myooo)

奇妙なスクリプトであることはわかっていますが、セッション キャッシュをどのように処理し、実際のプロジェクトで使用するのかを理解する必要があります。私はサーバー アウトライン コンソールで多くの時間を費やし、何が起こっているのかを理解しようと多くの書き込みを行いました。キャッシュは、セッション キャッシュではなく、従来のキャッシュのように機能するようです。

お役に立てれば幸いです(ps:明けましておめでとうございます):)

4

1 に答える 1

0

(私はより長いテキスト cca 500 chars を書きました) はい、あなたは正しいです、私はこれについて話している. 私は大きなアプリを構築しています。約30 dbのテーブルがあり、すべてがユーザーテーブルに集中しています(私にとっては大きいです。最大のプロジェクトで働いたことはありません)。ユーザーのログイン時に、ユーザーが主張するデータをキャッシュしたいと考えています。データベースへのクエリがたくさんあるので、それらをキャッシュしたいと思います。私の問題を解決し、セッションに保存されたキャッシュされたデータを使用しない他の方法はありますか?

create の例はテストについてのみです... (実際のテストではありませんが、正しく機能しているかどうかをテストします) オペラでフォームに入力し、create メソッドを呼び出します。Opera を使用しているユーザーのみにデータが保存されることを期待しています。ビューでは、私はこのようなものを作ります:

 <% a = Rails.cache.read(:myooo_create) %>
 <% if !a.nil? %>
 <%= a.myi %><br/>
 <%= a.mys %>
 <% end %>

しかし、Firefoxに移動すると、データがそこにありました...おそらく、このデータはセッションキャッシュではなく「一般キャッシュ」に保存されました。(もちろん、このビュー コードはとても悪いです!しかし、dalli の学習には適しています ;) )

于 2013-01-01T17:40:04.787 に答える