redis中存储list
用到的工具类
1、序列化操作
String multiMapStr = JSON.toJSONString(multiMapList); // list
2、object转换为指定类型的map或者其他类型
使用如下工具类,可以将object转换为list《map》
package com.geekmice.springbootselfexercise.utils;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.utils* @Author: pingmingbo* @CreateTime: 2023-12-09 15:34* @Description: TODO* @Version: 1.0*/
public class CastBeanUtil {private CastBeanUtil() {}/*** object 转换为list<map>* @param obj 源数据* @param kCalzz key对应class类型* @param vCalzz value对应class类型* @param <K>key类型* @param <V>value类型* @return list<map>*/public static <K, V> List<Map<K, V>> castListMap(Object obj, Class<K> kCalzz, Class<V> vCalzz) {List<Map<K, V>> result = new ArrayList<>();if (obj instanceof List<?>) {for (Object mapObj : (List<?>) obj) {if (mapObj instanceof Map<?, ?>) {Map<K, V> map = new HashMap<>(16);for (Map.Entry<?, ?> entry : ((Map<?, ?>) mapObj).entrySet()) {map.put(kCalzz.cast(entry.getKey()), vCalzz.cast(entry.getValue()));}result.add(map);}}return result;}return null;}}
通过字符串类型处理
list《map》形式
key:字符串
val:序列化过的字符串
List<Map<String, String>> multiMapList = Lists.newArrayList();
for (int i = 0; i < 5; i++) {LinkedHashMap<String, String> itemMap = Maps.newLinkedHashMap();itemMap.put("name", "jack" + i);if (i % 2 == 0) {itemMap.put("age", String.valueOf(10 + i));itemMap.put("sex", "男");} else {itemMap.put("age", String.valueOf(11 + i));itemMap.put("sex", "女");}multiMapList.add(itemMap);}
String multiMapStr = JSON.toJSONString(multiMapList);
client.opsForValue().set("str:multiusers", multiMapStr, DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);
String userList = client.opsForValue().get("str:multiusers");
List<Map<String, String>> maps = CastBeanUtil.castListMap(JSON.parse(userList), String.class, String.class);
log.info("maps : [{}]", maps);
list《entity》结构数据
List<TzArea> areaList = Lists.newArrayList();for (int i = 0; i < 10; i++) {TzArea item = new TzArea();item.setAreaId((long) i);item.setAreaName("江苏省");item.setLevel(1);item.setParentId(1L);areaList.add(item);}client.opsForValue().set("str:multiareas", JSON.toJSONString(areaList), DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);String res = client.opsForValue().get("str:multiareas");List<TzArea> tzAreas = JSON.parseArray(res, TzArea.class);log.info("tzAreas : [{}]", JSON.toJSONString(tzAreas));