2013-06-24 85 views
2

我試圖存儲從數據庫到Redis客戶端的Arraylist值。但Redis只有Key/Value方法,Key/Value必須是String格式。我如何將Key存儲爲字符串和值作爲Arraylist。如何在Redis緩存中存儲ArrayList?

+0

使用的HashMap相當。 –

回答

2

,你必須使用Map來存儲數據與鍵和值

Map<String, ArrayList<String>> map = new Map<String, ArrayList<String>>(); 
    ArrayList<String> a= new ArrayList<String>(); 
    a.add("Ganesh"); 
    map.put("Name", a); 
+0

我想緩存來自數據庫的結果。所以我們使用Redis緩存機制。例如,當相同的查詢先觸發時,如果不是DB,它將檢查緩存。如果緩存中可用的數據將返回給客戶端,而不會觸及數據庫。 –

+0

這是新的新HashMap不是新地圖 – Jason

1

但Redis的只有鍵/值方法鍵/值必須是字符串格式

Redis actually has very good support for storing values as lists,如果這就是你想要做的。這樣做,如果你想對值做任何類型的列表操作。

如果您只是想存儲列表並將其作爲一個整體進行檢索,那麼您只需將其序列化爲一個字符串,然後再存儲到Redis中。在這種情況下,將列表編碼爲JSON字符串(或任何其他序列化格式)並將其存儲在Redis中。然後,只要獲得它,並在你想要它時反序列化。

0

您可以輕鬆地做到這一點使用基於Redis的框架 - Redisson。它提供包裹收藏品,如java.util.List,java.util.Set,java.util.Map等等。

下面是List一個例子:

Config config = ... 
RedissonClient redisson = Redisson.create(config); 
List<String> list = redisson.getList("myList"); 
list.add("1"); 
list.add("2"); 
list.add("3"); 

list.remove("2"); 

它支持多種流行的編解碼器,像Jackson JSONAvroAmazon IonSmileCBORMsgPackKryoFSTLZ4SnappyJDK Serialization