簡體   English   中英

在內存中存儲和使用大型數據列表Spring Boot 2 Java

[英]in-memory storing and working with large data lists Spring Boot 2 java

我有一個應用程序,它可以處理大量的內存數據列表。 目前,我使用單例數據緩存結構,如下所示:

public class DataCache {

    private final Map<String, Map<String, ArrayList<String>>> arraysMap = new HashMap();
    private final Map<String, Map<String, Integer>> integerMap = new HashMap();
    private final Map<String, Map<String, String>> stringMap = new HashMap();
    private final Map<String, Map<String, MyObject>> arraysMap = new HashMap();

    /**
     * Map for boolean locks used to temporaly disable
     * edition while the data changes.
     */
    private final Map<String, Map<String, Boolean>> locksMap = new HashMap();

    private DataCache() {

    }

    private static final DataCache dataCache = new DataCache();

    public static DataCache getInstanceOf() {

        return dataCache;
    }

    ...getters/setters...
}

arraysMapmyObjectMap arraysMap了大部分工作量-大約20-50 / s的列表操作,例如put / replace / deletemyObjectMap相似操作(所有對象的總和)。 在多線程上下文中訪問maps 最初,這種負載不是預期的,但似乎工作得很好。 但是,似乎數據復雜性以及負載都會增加。

問題是-切換到某個外部解決方案( redis嗎?)合理還是保持即興創作就足夠了。 每個地圖的負載可能會增加到最大500 / s操作。 arraysMap列表可以最大為200mb。

切換到外部緩存解決方案(例如redis / memcache)是合理的,最重要的好處是您可以在工作量變大時輕松地橫向擴展應用程序,只需要在其他計算機上部署應用程序

在此處輸入圖片說明

暫無
暫無

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

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