मैं कैश स्टोर के रूप में रेडिस का उपयोग कर रहा हूं, और मैं सामान्य डेटा कैश करना चाहता हूं
@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end
लेकिन डेटा वापस आ गया Rails.cache.fetch
एक है String
, एक सरणी नहीं है List
वस्तुओं।
मुझे कैश को रेडियों से हटाना है, फिर अगला अनुरोध काम करेगा। लेकिन बहुत बार, यह फिर से टूट जाएगा।
संपादित करें: यह केवल विकास के माहौल में होता है
उत्तर:
उत्तर № 1 के लिए 1मैं समस्या स्थित हूँ।
समस्या संबंधित मॉडल है "जब लोड किया गया है जब डेटा को रेडिस / मेम्चे से पुनर्प्राप्त किया जाता है। इसलिए माणिक अनारक्षित प्रदर्शन नहीं कर सकता है।
सरल समाधान सेट करना है
config.cache_classes = true
दोष यह है कि जब आप कोड परिवर्तन करते हैं तो आपको अपना ऐप फिर से शुरू करना होगा।
एक अन्य को संबंधित वर्ग Rails.cache से पहले रखा जाता है, जैसे कि
Link
@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end
या एक इनिलाइज़र बनाएं और इसे कॉन्फिगरेशन / इनिशियलाइज़र के नीचे रखें
if Rails.env == "development"
Dir.glob("#{Rails.root}/app/models/**/*.rb") do |model_name|
require_dependency model_name
end
end