我正在尝试存储从DB到Redis Client的Arraylist值。但Redis只有Key / Value方法,Key / Value必须是String格式。如何将Key存储为字符串,将值存储为Arraylist。
答案 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)
您可以使用此
的集合单独添加成员,或者在redis-cli中添加数组,如下所示:
sadd my_new_set a b c d e f g
答案 3 :(得分: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 JSON
,Avro
,Amazon Ion
,Smile
,CBOR
,MsgPack
,Kryo
,FST
,LZ4
,Snappy
和JDK 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);
}
}