java map缓存static_Map方式实现JAVA数据缓存

本文介绍了如何使用Java的静态Map(static Map)来实现数据缓存机制。通过创建一个静态Map来存储所有数据,利用synchronized关键字保证线程安全。提供了加载所有数据、按ID和名称查找数据以及清除缓存的方法。当需要增删改数据时,需调用clearCache方法清空缓存。
摘要由CSDN通过智能技术生成

首先建一个map,该map用来存放所有的数据

protected static Map map = new HashMap<>();

加载所有User,将其放入到User中,map的key为User的id,value为user  加锁是为了保护安全

public void loadAllUser() {if (map.size() == 0) {

synchronized (map) {

try {

List userInfoList = userDAO.findAllUser();

for (User user : userInfoList) {

map.put(user.getId, user);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

如果需要根据id获取User

public User findById(String id){if(map.size() == 0){

loadAllUser();

}

User user = map.get(id);

return user;

}

这里需要先判断map是否为空,为空情况下就需要调用loadAllUser方法将数据存入到Map中

假设需要根据Name获取User  将map遍历一边

public User findByName(String name){if(map.size() == 0){

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过使用HashMap数据结构来实现一个简单的缓存。 具体实现步骤如下: 1. 定义一个HashMap作为缓存容器,用于存储缓存数据。 2. 定义一个缓存过期时间,当缓存数据超过一定时间没有被使用时,自动清除。 3. 定义一个缓存大小,当缓存数据的数量超过一定大小时,自动清除最近没有使用的缓存数据。 4. 当需要从缓存中获取数据时,首先判断该数据是否在缓存中存在,如果存在并且未过期,则直接返回数据;否则从数据库或其他数据源中获取数据,并将数据存入缓存中。 5. 当需要向缓存中添加数据时,首先判断缓存是否已满,如果已满则清除最近没有使用的缓存数据,然后将新数据添加到缓存中。 6. 实现缓存的自动清理功能,可以使用定时任务或者线程池等方式。 示例代码如下: ```java import java.util.HashMap; import java.util.Map; public class SimpleCache { private static Map<String, Object> cache = new HashMap<>(); private static Map<String, Long> expireTime = new HashMap<>(); private static int maxSize = 10000; public static void put(String key, Object value, long expire) { if (cache.size() >= maxSize) { removeLeastUsed(); } cache.put(key, value); expireTime.put(key, System.currentTimeMillis() + expire); } public static Object get(String key) { if (cache.containsKey(key)) { long exp = expireTime.get(key); if (exp <= 0 || System.currentTimeMillis() < exp) { return cache.get(key); } else { cache.remove(key); expireTime.remove(key); } } return null; } private static void removeLeastUsed() { String leastUsedKey = null; for (String key : cache.keySet()) { if (leastUsedKey == null) { leastUsedKey = key; } else { if (expireTime.get(key) < expireTime.get(leastUsedKey)) { leastUsedKey = key; } } } cache.remove(leastUsedKey); expireTime.remove(leastUsedKey); } } ``` 在该示例代码中,使用了一个HashMap作为缓存容器,存储缓存数据;使用了一个Map记录缓存数据的过期时间;使用了一个int类型的maxSize表示缓存的最大容量;实现了put和get方法来向缓存中添加数据和获取数据;同时还实现了一个removeLeastUsed方法来清除最近没有使用的缓存数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值