map同步数据库/后台缓存
来源:互联网 发布:淘宝商品如何做图 编辑:程序博客网 时间:2024/05/16 07:38
几天在看ehcache的时候看到一个问答,里面回答的对我非常有帮助,这里摘抄一下
package com.cto.caches; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * 缓存单例 * <a href="http://home.51cto.com/index.php?s=/space/1269642" target="_blank">@author</a> wangzp * */ public class MapCache { /** * 缓存Map */ private static Map<String, String> cache; private MapCache(){ if (cache == null){ cache = new ConcurrentHashMap<String, String>(); } } private static class MapCacheHandler{ private static MapCache instance = new MapCache(); } public static MapCache getInstance(){ return MapCacheHandler.instance; } public void put(String key, String value){ cache.put(key, value); } } package com.cto.caches; /** * 这里不具体实现,仅仅写个模式 * <a href="http://home.51cto.com/index.php?s=/space/1269642" target="_blank">@author</a> wangzp * */ public class UserDao { public void addUser(Object o){ /** 在你更新(添加、删除、修改操作中) **/ // super.save(o); /** 完成了更新操作 ,将数据放置到缓存中,key和value来自于o中**/ MapCache.getInstance().put("", ""); // 这样的话,就达到了数据库操作完成之后,同步更新到缓存中 } }
我写的比较简单,当然缓存仅仅用Map不用单例也是可以的;你首先要理解一点,就是缓存是数据java的,也就JVM管理的(当然也可以是其他的缓存机制),一般不外乎就是List、Set、Map,所谓的同步就是保持与元数据一致,你的元数据就是数据库数据,那么在数据更新操作完成之后,你把相应的数据,也映射到缓存中就实现了同步。
缓存一般做法:
1、一次查询(不要每次查询的结果都存放在Map中)
2、缓存更新(同步、异步)
3、防止内存泄漏,往往会定期更新缓存(即:清空缓存,重写导入数据到缓存中)
至于更加高级的缓存,例如Hibernate的自带缓存,或者第三方缓存,那就得根据人家的文档来了。
同步和异步:
1、同步:所谓的同步,以两个事务为例(A,B),假设B依赖于A,那么在A完成之后,B马上执行,所以你在数据库操作完成之后,应该马上处理缓存,保持数据一致;
2、异步:与同步相反,A完成了,可以延迟一段时间,或者交由其他方式调用(通知B)完成。
0 0
- map同步数据库/后台缓存
- java后台数据库同步使用map进行缓存
- redis缓存和mysql数据库同步
- redis缓存和mysql数据库同步
- TimesTen 应用层数据库缓存学习:7. 同步读写缓存
- map缓存
- redis缓存中写入数据与数据库数据同步
- js读取后台Map
- 异步后台同步数据
- XML后台同步应用
- 前台后台同步
- 单例-Map-缓存
- java map缓存
- map实现简单缓存
- java实现缓存Map
- 利用map做缓存
- 同步和只读Map
- Hibernate 缓存同步策略
- C++ explicit关键字
- linux下C++开发工具
- 并查集初学(2)LA 3644 & LA3027
- Android之十一实现登陆页面分析
- Linux下常用的C/C++开源Socket库
- map同步数据库/后台缓存
- Android5.1系统WebView内存泄漏场景
- Hash Compared & ELFHash 详解
- 桌面图标没有是解决方法windown
- 3D 游戏控制
- Spark中的各种action算子操作(java版)
- 对优秀程序员的思考
- 40个良好用户界面设计Tips
- 欢迎使用CSDN-markdown编辑器