2

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

4

5 回答 5

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);
于 2013-06-24T11:02:41.730 回答
1

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

Redis 实际上对将值存储为列表有很好的支持,如果这是您想要做的。如果您想对值执行任何类型的列表操作,请执行此操作。

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

于 2013-06-24T17:57:16.697 回答
0

您可以为此使用一组

http://redis.io/commands/sadd

将成员单独添加到集合中,或者像这样在 redis-cli 中的数组中添加:

sadd my_new_set a b c d e f g
于 2013-06-24T21:39:52.763 回答
0

您可以使用基于 Redis 的框架 - Redisson轻松完成此操作。它提供包装的集合,如、java.util.List等等。java.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 JSON, Avro, Amazon Ion, Smile, CBOR, MsgPack, Kryo, FST, LZ4,SnappyJDK Serialization

于 2017-07-19T11:50:22.930 回答
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);
        }
    }
于 2021-01-08T08:03:11.513 回答