Java8优化优先检索缓存的代码
来源:互联网 发布:手机淘宝怎么评论差评 编辑:程序博客网 时间:2024/05/01 22:08
1、模拟Redis的缓存客户端
提供优化首先从缓存获取、缓存取不到则从数据获取并更新缓存的方法。
import java.util.HashMap;import java.util.Map;import java.util.Objects;import java.util.function.Supplier;/** * @author: wangyingjie1 * @version: 1.0 * @createdate: 2017-09-21 10:52 */public class RedisCache { //模拟Redis 缓存 private Map<String, Object> map = new HashMap<>(); /** * 首先从缓存获取、缓存取不到则从数据获取并更新缓存 * * @param supplier * @param key 缓存key * @param exp 过期时间 * @param <T> * @return */ public <T> T getCacheFirst(Supplier<T> supplier, String key, long exp) { T obj = (T) getObject(key); if (obj != null) { return obj; } obj = supplier.get(); if (Objects.nonNull(obj)) { setObject(key, obj, exp); } return obj; } /** * @param key * @param obj * @param exp redis失效时间 * @param <T> */ public <T> void setObject(String key, T obj, long exp) { map.put(key, obj); } public Object getObject(String key) { return map.get(key); }}
2、测试代码
import org.junit.Test;import java.util.Objects;/** * 使用Java8优化优先查缓存的代码 * * @author: wangyingjie1 * @version: 1.0 * @createdate: 2017-09-21 10:50 */public class RedisCacheTest { private RedisCache redisCache = new RedisCache(); //优化缓存的使用 @Test public void testCache() { //java8 before Object data = getFirstCacheData(); System.out.println("data=====>" + data); //java8 String value = redisCache.getCacheFirst(() -> getDateFromDB(), "key", 100); System.out.println("value=====>" + value); } //优先从缓存获取数据,如果缓存不存在则从数据库、接口进行获取数据 private Object getFirstCacheData() { Object value1 = redisCache.getObject("key1"); String data = null; if (Objects.isNull(value1)) { data = getDateFromDB(); if (Objects.isNull(null)) { redisCache.setObject("key1", data, 10000); } } return data; } private String getDateFromDB() { //todo 可以从数据库、接口进行检索数据 return "Hello World"; }}
阅读全文
0 0
- Java8优化优先检索缓存的代码
- 缓存检索的介绍
- 优先队列优化的dijsktra完整代码+路径记录
- Java8简单的本地缓存实现
- PHP代码优化之缓存
- Android性能优化之缓存的代码实现
- 逐步优化看出Java8的强大
- 【代码优化】注解优先命名模式
- 代码优先与契约优先的比较
- 优先队列优化的dijsktra
- dijkstra的优先队列优化
- Java8-本地缓存
- Java8-本地缓存
- Java8 构建本地缓存
- Okhttp的缓存优化
- Lucene的检索优化(一)
- Lucene的检索优化(转)
- Hibernate的检索策略和优化
- Javascript模块化编程及CommonJS和AMD规范浅析(一)
- 流水号设计
- 设计模式
- 网页内容高度不够时,让footer处于页面底部的方法(不是固定在底部)
- 第4周项目3(2)- 单链表应用
- Java8优化优先检索缓存的代码
- 按钮
- 实验一线性表的基本操作实现及其应用
- 文件路径
- 深入理解异步和同步
- 版本控制工具
- oracle 新建字段后查询时出现标识符无效问题
- 第三周 项目四 顺序表应用 (2)
- Python之map()/reduce()