Java 如何在Redis缓存中存储ArrayList?
我试图存储从DB到Redis客户端的Arraylist值。但是Redis只有Key/Value方法,Key/Value必须是字符串格式。如何将键存储为字符串,将值存储为Arraylist 您必须使用映射来存储带有键和值的数据Java 如何在Redis缓存中存储ArrayList?,java,caching,redis,Java,Caching,Redis,我试图存储从DB到Redis客户端的Arraylist值。但是Redis只有Key/Value方法,Key/Value必须是字符串格式。如何将键存储为字符串,将值存储为Arraylist 您必须使用映射来存储带有键和值的数据 Map<String, ArrayList<String>> map = new Map<String, ArrayList<String>>(); ArrayList<String> a= new Ar
Map<String, ArrayList<String>> map = new Map<String, ArrayList<String>>();
ArrayList<String> a= new ArrayList<String>();
a.add("Ganesh");
map.put("Name", a);
Map Map=newmap();
ArrayList a=新的ArrayList();
a、 添加(“Ganesh”);
地图放置(“名称”,a);
但是Redis只有Key/Value方法,Key/Value必须是字符串格式
,如果这是你想做的。如果要对值执行任何类型的列表操作,请执行该操作
如果您只想存储列表并将其作为一个整体检索,那么您只想在存储到Redis之前将其序列化为字符串。在这种情况下,将列表编码为JSON字符串(或任何其他序列化格式),并将其存储在Redis中。然后获取它,并在需要时反序列化。您可以为此使用一个集合 将成员单独添加到集合中,或在redis cli的阵列中添加,如下所示:
sadd my_new_set a b c d e f g
使用基于Redis的框架-,您可以轻松做到这一点。它提供了包装的集合,如
java.util.List
、java.util.Set
、java.util.Map
等等
下面是列表的一个示例:
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");
Config=。。。
RedissonClient redisson=redisson.create(config);
List=redisson.getList(“myList”);
列表。添加(“1”);
列表。添加(“2”);
列表。添加(“3”);
列表。删除(“2”);
它支持许多流行的编解码器,如Jackson-JSON
,Avro
,Amazon-Ion
,Smile
,CBOR
,MsgPack
,Kryo
,FST
,LZ4
,Snappy
和JDK序列化
您可以使用以下代码在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);
}
}
public void saveCollection(字符串键,集合对象){
试一试{
ListOperations listOps=redisTemplate.opsForList();
listOps.rightPushAll(键,对象);
info(“在Redis中保存{}键的集合”,键);
}捕获(重新捕获){
LOGGER.error(“Redis异常”,e);
}
}
我希望缓存来自数据库的结果。所以我们使用的是Redis缓存机制。例如,当同一个查询首先触发时,它将签入缓存,如果不是,则签入DB。如果缓存中的数据可用,则在不命中数据库的情况下返回t客户端。这是新的HashMap而不是新的Map