java 缓存 - 在使用 Map 和使用 Graph 之间进行选择

java cacheing - choice between using a Map and using a Graph

在我的 java Spring 应用程序中,我需要构建一些配置元数据的进程内/内存缓存,其结构如下:

Graph<String customerName, Map<String, JSONObject> customerMetadata>:

  "My Customer" "CustomerInfo":
                    {IngestionConfig:  {"data": "schema":{"fields"[]}}}
                "Asset"
                    {IngestionConfig:  {"data": "schema":{"fields"[]}}}
                "Invoice"
                    {IngestionConfig:  {"data": "schema":{"fields"[]}}}

问题:

哪种技术更适合此目的:Map、来自 Google Guava 的 ValueGraph、EhCache 或其他一些技术?

视情况而定。您是否希望您的缓存在特定时间后自行过期?您需要分发您的地图吗?它是只读的还是您打算 运行 次更新它?如果它不是只读的,您的环境是单线程还是多线程? 如果您不需要任何这些花里胡哨的东西并且它是只读的,我宁愿使用 Map(或任何包含 Java 的东西)。 (这只是一个意见——我是一个极简主义者。)