如何在Redis缓存中存储ArrayList?

时间:2013-06-24 10:58:47

标签: java caching redis

我正在尝试存储从DB到Redis Client的Arraylist值。但Redis只有Key / Value方法,Key / Value必须是String格式。如何将Key存储为字符串,将值存储为Arraylist。

5 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

  

但Redis只有Key / Value方法,Key / Value必须是String格式

Redis actually has very good support for storing values as lists,如果这就是你想要做的。如果您想对值进行任何类型的列表操作,请执行此操作。

如果您只想存储列表并将其作为整体检索,那么您希望在存储到Redis之前将其序列化为字符串。在这种情况下,将列表编码为JSON字符串(或任何其他序列化格式)并将其存储在Redis中。然后只需获取它并在需要时反序列化。

答案 2 :(得分:0)

您可以使用此

的集合

http://redis.io/commands/sadd

单独添加成员,或者在redis-cli中添加数组,如下所示:

sadd my_new_set a b c d e f g

答案 3 :(得分:0)

您可以使用基于Redis的框架轻松完成此操作 - Redisson。它提供包裹的集合,如java.util.Listjava.util.Setjava.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

答案 4 :(得分:0)

可以使用如下代码在redis中存储ArrayList

 public void saveCollection(String key, Collection<String> object) {
        try {
            ListOperations<String, String> listOps = redisTemplate.opsForList();
            listOps.rightPushAll(key, object);
            LOGGER.info("Saving collection for key {} in Redis", key);
        } catch (RedisException e) {
            LOGGER.error("Redis Exception", e);
        }
    }