springboot缓存 之 从Cache中取出所有条目
来源:互联网 发布:淘宝论坛推广方法 编辑:程序博客网 时间:2024/06/06 01:23
背景
前两天遇到一个问题,就是将一个 key ,value1、value2 、value3、value4…… 也就是一个 key 多个 value 的数据结构放到 缓存中。这个简单,我就把他们都放到了GuavaCacheManager 缓存中,(GuavaCacheManager可以参考这里 点我 )
但是在取出数据的时候遇到了一个问题。
问题
我门知道 GuavaCacheManager 的数据结构类似 Map<String,Map<Object,Object>> map =new HashMap<>();
我将 数据的key 当作外层map 的 key ,内层map 的key 就随笔用了唯一值,但是在取出缓存值的时候遇到一个问题,取缓存只支持通过 “key“ 从cache 中取出缓存,不支持从cache 中取出所有的条目
我看了cache 的api通过cache 的getNativeCache方法可以得到cache中的所有条目
Object o = cache.getNativeCache();
解决
从上图可以看出这个对象是 类似一个list<map<String,Object>>
的数据结构,于是我就进行转换发现不行,那么就直接当作 map 进行转换
Cache cache = cacheManager.getCache(map.get("keyCode").toString()); Object o = cache.getNativeCache(); try { Map<String, Object> map2 = (Map<String, Object>) CommonUtil.ObjToMap(o).get("localCache"); for (Map.Entry<String, Object> entry : map2.entrySet()) { System.out.println(entry.getValue()); } return list; } catch (Exception e) { logger.warn("DictionaryItem cache is error !!!"); }/** * Obj 转换为 map * @param obj * @return * @throws Exception */ public static Map<String, Object> ObjToMap(Object obj) throws Exception { Map<String, Object> map = new HashMap<>(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } return map; }
由上图发现我是转换了两次map 才取到了所有的值。。。
最后推荐大家用 注解方式进行缓存管理, :大家可以参考
springboot的缓存技术
好了最后献上 java Object 转换map 的方法
java Object 转换map
阅读全文
0 0
- springboot缓存 之 从Cache中取出所有条目
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC FREESYSTEMCACHE从所有缓存中释放所有未使用的缓存条目
- SpringBoot之数据缓存Cache操作
- 从文本中取出所有ip
- SpringBoot中的Cache缓存
- android 从imageloader中取出缓存中的图片
- 实例二、从字符串中取出所有整数
- 从数据库中取出所有表(oracle,sqlserver),从表中取出所有的列名及类型.
- Guava之controller中使用缓存cache
- php从数组中取出一段 之 array_slice
- springboot缓存 之 GuavaCacheManager
- Springboot中使用缓存
- Springboot中使用缓存
- 数据缓存cache中
- 从1到10的数中取出3个数的所有组合情况
- 从数组中取出n个元素的所有组合(递归实现)
- 从数组中取出n个元素的所有组合(递归实现)
- 从数组中取出n个元素的所有组合(递归实现)
- Keras 文本预处理
- ajax框架,juery的实现xml,中文乱码与跨域访问
- so 动态加载---解决sdk过大问题
- 链表--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 《Angular之引用标签报错》
- springboot缓存 之 从Cache中取出所有条目
- ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储
- Android学习资源大整合
- 实训--day07就业指导
- Android 相关环境变量配置(包括JDK、SDK)
- 及杳
- 《上帝与新物理学》
- 剑指offer刷题---面试题11
- Fresco 框架的基本使用