当前位置:网站首页>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 :
边栏推荐
- Haut OJ 1347: addition of choice -- high progress addition
- Grail layout and double wing layout
- kubeadm系列-02-kubelet的配置和启动
- win10虚拟机集群优化方案
- Applet live + e-commerce, if you want to be a new retail e-commerce, use it!
- 一个新的微型ORM开源框架
- 使用Room数据库报警告: Schema export directory is not provided to the annotation processor so we cannot expor
- Learning notes of "hands on learning in depth"
- How can the Solon framework easily obtain the response time of each request?
- YOLOv5添加注意力机制
猜你喜欢
随机推荐
Shell Sort
YOLOv5添加注意力机制
[to be continued] [UE4 notes] L1 create and configure items
Haut OJ 1350: choice sends candy
Haut OJ 1221: a tired day
Bubble sort summary
Double pointer Foundation
[speed pointer] 142 circular linked list II
Es module and commonjs learning notes
[sum of two numbers] 169 sum of two numbers II - enter an ordered array
[es practice] use the native realm security mode on es
Haut OJ 2021 freshmen week II reflection summary
二十六、文件系统API(设备在应用间的共享;目录和文件API)
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Csp-j-2020-excellent split multiple solutions
[interval problem] 435 Non overlapping interval
Stm32cubemx (8): RTC and RTC wake-up interrupt
JVM call not used once in ten years
服务熔断 Hystrix
High precision subtraction