Java 利用Map写个简单的缓存

今天项目中用到缓存的知识,利用Map写了个简单的缓存,特此来总结一下。

直接上代码: 缓存类(MyCache.java)

import java.util.HashMap;
import java.util.Map;


public class MyCache {

    private static final String MY_FIRST_KEY = "myFirstKey";
    private static final String MY_SECOND_KEY = "mySecondKey";
    private static final String MY_THIRD_KEY = "myThirdKey";

    private static MyCache myCache = null;
    private static Map<String, String> pathMap = new HashMap<String, String>(){


        /**
         * 给Map初始化、赋值
         */
        private static final long serialVersionUID = 8215851505074905693L;
        {
            put(MY_FIRST_KEY, "");
            put(MY_SECOND_KEY, "");
            put(MY_THIRD_KEY, "");
        }
    };

    /**
     *
     * @return 返回该Map
     */
    public static MyCache getMyCache(){
        if(null ==  myCache){
            myCache = new MyCache();
        }
        return myCache;
    }
    
    /**
     *
     * @param myFirstValue 向缓存中存入第一个值
     */
    public void setMyFirstValue(String myFirstValue){
        pathMap.put(MY_FIRST_KEY, myFirstValue);
    }
    
    /**
     *
     * @return 根据键返回缓存的值
     */
    public String getMyFirstValue(){
        return pathMap.get(MY_FIRST_KEY);
    }

    public void setMySecondValue(String mySecondValue){
        pathMap.put(MY_SECOND_KEY, mySecondValue);
    }

    public String getMySecondValue(){
        return pathMap.get(MY_SECOND_KEY);
    }

    public void setMyThirdValue(String myThirdValue){
        pathMap.put(MY_THIRD_KEY, myThirdValue);
    }

    public String getMyThirdValue(){
        return pathMap.get(MY_THIRD_KEY);
    }

}

在另一个方法中就可以直接调用了:

MyCache.getMyCache().getMyFirstValue();

向缓存中存值也可直接存入了

MyCache.getMyCache().setMyFirstVaule("aaaaa");

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 `Map` 实现简单本地缓存,并且每天早上定时任务清除并重新存储数据的示例代码: ```java import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; public class LocalCacheExample { private static Map<String, Object> cache = new HashMap<>(); public static void main(String[] args) { // 模拟每天早上定时任务时间 long interval = 24 * 60 * 60 * 1000; // 24小时 // 执行定时任务 Timer timer = new Timer(); timer.schedule(new CacheRefreshTask(), interval, interval); // 存储数据到缓存 storeData("key1", "value1"); storeData("key2", "value2"); // 从缓存中获取数据 System.out.println(getData("key1")); // 输出: value1 System.out.println(getData("key2")); // 输出: value2 // 等待定时任务执行完毕 try { Thread.sleep(interval); } catch (InterruptedException e) { e.printStackTrace(); } // 重新从缓存中获取数据 System.out.println(getData("key1")); // 输出: null System.out.println(getData("key2")); // 输出: null // 停止定时任务 timer.cancel(); } private static void storeData(String key, Object value) { cache.put(key, value); } private static Object getData(String key) { return cache.get(key); } private static class CacheRefreshTask extends TimerTask { @Override public void run() { // 清除缓存 cache.clear(); // 重新存储数据到缓存 storeData("key1", "new value1"); storeData("key2", "new value2"); System.out.println("缓存已更新"); } } } ``` 在上面的示例中,使用 `HashMap` 实现了一个简单的本地缓存 `cache`。定时任务 `CacheRefreshTask` 负责在每天早上清除并重新存储数据。首先,通过 `storeData()` 方法将数据存储到缓存中,然后通过 `getData()` 方法从缓存中获取数据。等待定时任务执行完毕后,再次从缓存中获取数据,可以看到数据已被清除并重新存储。 请注意,上面的示例只是一个简单的示例,实际应用中可能需要考虑并发访问、缓存过期策略等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值