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 的东西)。
(这只是一个意见——我是一个极简主义者。)
在我的 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 的东西)。 (这只是一个意见——我是一个极简主义者。)