簡體   English   中英

如何更改Rails Redis緩存格式?

[英]How to change Rails redis cache format?

使用redis-rails gem時,如何更改Rails上的存儲方法。 我將緩存存儲設置為使用redis,然后按記錄使用Rails.cache.fetch。 它可以完全按預期工作,但是在檢索密鑰時,輸出不是易於編輯的格式。 使用redis-desktop-manager的輸出是: http : //imgur.com/cE1pAy1

(無敏感信息,隨機生成)。 有什么辦法可以將其存儲為JSON嗎? 我的最終目標是能夠使用Java連接到Redis服務器,並為Redis數組中的特定用戶更新字段。

這是我使用緩存的方法:

Rails.cache.fetch("some_key", expires_in: 1.day) do
 User.all.to_a.each do |user|
     user.name = "foobar"
 end

后來,我希望通過Java連接到Redis,並通過ID或其他屬性來設置一些用戶名。 如何反序列化Redis數據或將其存儲在JSON之類的內容中以輕松解析和更改屬性?

編輯好的,我找到了一種方法來覆蓋redis商店中的編組代碼(redis-rails要求)以使用YAML,我可以對它進行反序列化。 現在,我的下一個問題是:將Redis代表一個用戶數組的YAML文件存儲到單個密鑰中,然后更新整個yaml文件(僅進行一兩個增量或減量更改)是否對redis造成了不好的使用?經常用Java嗎?

當前的YAML文件是用戶列表,以及用Java編寫的游戲中用戶的殺戮和死亡情況。 Java游戲將需要經常更新YAML文件中的密鑰,這意味着獲取整個YAML文件,對其進行解析,更改值,返回YAML格式並將其設置為密鑰值。 這到底有多低效(我應該擔心),並且如果需要,如何使Rails redis更喜歡將每個用戶存儲為單獨的密鑰?

我只是覆蓋了編組代碼。 我重新打開了https://github.com/redis-store/redis-store/blob/master/lib/redis/store/marshalling.rb

並用YAML :: dump替換了Marshall :: dump,並加載了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM