当前位置:网站首页>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 :

边栏推荐
- Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
- 发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
- [binary search] 34 Find the first and last positions of elements in a sorted array
- Learning notes of "hands on learning in depth"
- Development error notes
- To be continued] [UE4 notes] L4 object editing
- 被舆论盯上的蔚来,何时再次“起高楼”?
- Ue4/ue5 illusory engine, material part (III), material optimization at different distances
- Optimization scheme of win10 virtual machine cluster
- 挂起等待锁 vs 自旋锁(两者的使用场合)
猜你喜欢

第六章 数据流建模—课后习题

Ue4/ue5 illusory engine, material part (III), material optimization at different distances
![[轉]: OSGI規範 深入淺出](/img/54/d73a8d3e375dfe430c2eca39617b9c.png)
[轉]: OSGI規範 深入淺出

Grail layout and double wing layout
![[转]MySQL操作实战(一):关键字 & 函数](/img/b1/8b843014f365b786e310718f669043.png)
[转]MySQL操作实战(一):关键字 & 函数

Merge sort

远程升级怕截胡?详解FOTA安全升级

Quick sort summary

Applet Live + e - commerce, si vous voulez être un nouveau e - commerce de détail, utilisez - le!

Ue4/ue5 illusory engine, material chapter, texture, compression and memory compression and memory
随机推荐
Double pointer Foundation
十年不用一次的JVM调用
A new micro ORM open source framework
[paper notes] multi goal reinforcement learning: challenging robotics environments and request for research
Simple HelloWorld color change
Haut OJ 1241: League activities of class XXX
Haut OJ 1357: lunch question (I) -- high precision multiplication
JVM call not used once in ten years
Embedded database development programming (zero)
Haut OJ 1401: praise energy
[转]: OSGI规范 深入浅出
小程序直播+電商,想做新零售電商就用它吧!
使用Electron开发桌面应用
Web APIs DOM node
Page countdown
Learning notes of "hands on learning in depth"
[trans]: spécification osgi
[allocation problem] 455 Distribute cookies
object serialization
Binary search basis