当前位置:网站首页>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 :
边栏推荐
- [paper notes] multi goal reinforcement learning: challenging robotics environments and request for research
- Haut OJ 1316: sister choice buys candy III
- When will Wei Lai, who has been watched by public opinion, start to "build high-rise buildings" again?
- Count sort
- Quick sort summary
- BUUCTF MISC
- Es module and commonjs learning notes -- ESM and CJS used in nodejs
- xftp7与xshell7下载(官网)
- [to be continued] [UE4 notes] L3 import resources and project migration
- 记录QT内存泄漏的一种问题和解决方案
猜你喜欢
object serialization
对象的序列化
Ue4/ue5 illusory engine, material part (III), material optimization at different distances
Grail layout and double wing layout
To be continued] [UE4 notes] L4 object editing
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
YOLOv5添加注意力机制
第六章 数据流建模—课后习题
[turn]: OSGi specification in simple terms
Research on the value of background repeat of background tiling
随机推荐
Drawing dynamic 3D circle with pure C language
PMP candidates, please check the precautions for PMP examination in July
Introduction to tools in TF-A
[turn to] MySQL operation practice (I): Keywords & functions
Acwing 4301. Truncated sequence
[turn]: Apache Felix framework configuration properties
Simple modal box
Transport connection management of TCP
26、 File system API (device sharing between applications; directory and file API)
Count sort
Bucket sort
ssh免密登录设置及使用脚本进行ssh登录并执行指令
远程升级怕截胡?详解FOTA安全升级
十年不用一次的JVM调用
Page countdown
MySQL数据库(一)
[binary search] 69 Square root of X
room数据库的使用
[trans]: spécification osgi
Zheng Qing 21 ACM is fun. (3) part of the problem solution and summary