我正在尝试将来自 DB 的 Arraylist 值存储到 Redis Client 。但是 Redis 只有 Key/Value 方法,Key/Value 必须是 String 格式。我如何将键存储为字符串,值存储为 Arraylist。
问问题
7801 次
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
您可以为此使用一组
将成员单独添加到集合中,或者像这样在 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.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
于 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 回答