当前位置:网站首页>Using HashMap to realize simple cache
Using HashMap to realize simple cache
2022-07-05 05:25:00 【Cold heart】
Recently, there is a need to use simple caching technology , For various reasons , Can't use redis, Other caching framework technologies cannot be used , Therefore, a simple cache implementation is made , The general principle is as follows :
Define a cache initialization class (CacheInit), Used to save data and survival time , Then judge when requesting data map Whether there is a value in , If it exists and is within its lifetime , Then return directly , If it does not exist or exists and exceeds the survival time , Then get the value again , And then put in map, to update map Value in and survival time . The code is as follows :
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author :Hanjun
* @date 2022/7/4
*/
@RestController
@RequestMapping("/cacheTest")
public class CacheTestControl {
private static Map<String, Object> finalQYMap = new HashMap<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@RequestMapping(value = "/getToken")
public String test(){
// When valid in the global buffer , Take the buffered first
if (finalQYMap.size() > 0 && finalQYMap.get("test") != null) {
CacheInit init = (CacheInit) finalQYMap.get("test");
Calendar applyTime = Calendar.getInstance();
applyTime.setTime(init.getApplyTime());
Calendar nowTime = Calendar.getInstance();
nowTime.setTime(new Date());
if(nowTime.compareTo(applyTime) < 0) {
System.out.println(" Cache fetch time :"+dateFormat.format(new Date()));
return init.getAccessToken();
}
}
String token = "testToken123456";
CacheInit init = new CacheInit();
init.setAccessToken(token);
Date now = new Date();
Calendar applyTime = Calendar.getInstance();
applyTime.setTime(now);
// Set the cache 10 second
applyTime.add(Calendar.SECOND, 10);
init.setApplyTime(applyTime.getTime());
System.out.println(" Non cached fetch token Time :"+dateFormat.format(new Date()));
finalQYMap.put("test", init);
return token;
}
}
package com.sinosoft.controller;
import java.util.Date;
/**
* @author :Hanjun
* @date 2022/7/4
*/
public class CacheInit {
private String accessToken;
/** Acquisition time */
private Date applyTime;
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public Date getApplyTime() {
return applyTime;
}
public void setApplyTime(Date applyTime) {
this.applyTime = applyTime;
}
}
The effect is as follows :
边栏推荐
- [转]:Apache Felix Framework配置属性
- kubeadm系列-02-kubelet的配置和启动
- Kali 2018 full image download
- Solon Logging 插件的添加器级别控制和日志器的级别控制
- Yolov5 adds attention mechanism
- Haut OJ 1350: choice sends candy
- 挂起等待锁 vs 自旋锁(两者的使用场合)
- Csp-j-2020-excellent split multiple solutions
- Haut OJ 1347: addition of choice -- high progress addition
- Yolov5 ajouter un mécanisme d'attention
猜你喜欢
随机推荐
服务熔断 Hystrix
Embedded database development programming (V) -- DQL
浅谈JVM(面试常考)
Introduction to tools in TF-A
Acwing 4301. Truncated sequence
sync.Mutex源码解读
Reader writer model
BUUCTF MISC
Solon 框架如何方便获取每个请求的响应时间?
PMP candidates, please check the precautions for PMP examination in July
Learning notes of "hands on learning in depth"
[转]MySQL操作实战(一):关键字 & 函数
GBase数据库助力湾区数字金融发展
小程序直播+电商,想做新零售电商就用它吧!
Stm32cubemx (8): RTC and RTC wake-up interrupt
Bucket sort
Solon Auth 认证框架使用演示(更简单的认证框架)
2022年上半年国家教师资格证考试
Embedded database development programming (zero)
[to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column