Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Redis缓存中存储ArrayList?_Java_Caching_Redis - Fatal编程技术网

Java 如何在Redis缓存中存储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

我试图存储从DB到Redis客户端的Arraylist值。但是Redis只有Key/Value方法,Key/Value必须是字符串格式。如何将键存储为字符串,将值存储为Arraylist

您必须使用映射来存储带有键和值的数据

  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