2013-06-24 86 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