我需要在Redis中缓存各种数据结构,出于性能原因,我希望将数据序列化为字节数组并将其与BinaryJedis一起存储。这似乎是一件相当简单的事情,直到我遇到一些实现Map接口的数据结构的问题,但是不可序列化。
到目前为止,我处理的是LazyMap和GroovyRowResult,但我确定还有其他人。它们非常烦人,因为序列化无声地失败。如果我有一个我自己初始化的常规地图,它将是一个LinkedHashMap,它将很好地序列化。但是,如果我的地图包含我从JSON解析或从SQL读取的数据,那么它们将是LazyMap和GroovyRowResult类型,它们将在序列化输出中显示为空值。
所以我正在编写一个克隆地图结构的递归函数,其中所有地图类型的键都保存为LinkedHashMaps。
这是我到目前为止所做的:
<ListenFor RequireAppName="BeforeOrAfterPhrase"> {destination} from app</ListenFor>
我试图添加trampolining以避免炸毁堆栈,但我注意到我应该重写这个以使用尾调用而且我有点卡住了。我觉得我错过了一些优雅的做法,但我无法看到它。
我可以将地图存储为JSON,但所有解析似乎都是一个巨大的浪费。