如何将ArrayList存储在Redis缓存中?

3

我正在尝试将来自数据库的ArrayList值存储到Redis客户端中。但是Redis只有键/值方法,而键/值必须是字符串格式。我该如何将键存储为字符串,将值存储为ArrayList呢?

5个回答

2
但 Redis 只有键/值方法,键/值必须是字符串格式。如果您想要将值存储为列表,则Redis实际上非常支持。如果您想对该值执行任何类型的列表操作,请这样做。如果您只想将列表存储并将其作为整体检索,则应在存储到 Redis 之前将其序列化为字符串。在这种情况下,将列表编码为 JSON 字符串(或任何其他序列化格式)并将其存储在 Redis 中。然后,在需要时 GET 它并进行反序列化。

1

你需要使用Map来存储具有键和值的数据

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

我想要缓存来自数据库的结果。因此,我们使用Redis缓存机制。例如,当相同的查询首次触发时,它将首先在缓存中检查,如果没有,则在数据库中查找。如果数据在缓存中可用,则会将其返回给客户端,而无需访问数据库。 - java_dev
这是新的 HashMap,不是新的 Map。 - Jason

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


0
你可以使用一个集合来实现这个。

http://redis.io/commands/sadd

在redis-cli中,可以逐个将成员添加到集合中,也可以使用数组的方式进行添加,如下所示:

sadd my_new_set a b c d e f g

0
您可以使用以下代码将ArrayList存储在Redis中。
 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);
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接