关于java:Map方式实现JAVA数据缓存

33次阅读

共计 1611 个字符,预计需要花费 5 分钟才能阅读完成。

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

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

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

public void loadAllUser() {


          if (map.size() == 0) {synchronized (map) {

                          try {List<User> 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){loadAllUser();
          }
          User user = new User();
          for (Map.Entry<String, User> entry : map.entrySet()) {if (entry.getValue().getName.equals(name)) {user = entry.getValue();
              }

      }

      return user;

  }


当然,必不可少的一个办法,clear

public void clearCache() {


      synchronized (map) {map.clear();

      }

  }



* 在对数据进行 增 删 改的时候,必须调用这个 clear 办法,将缓存清空

这样,一个简略的缓存机制就实现了

这仅仅是自己低见

残缺代码如下

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

/* 查找所以数据放入到缓存 /

  public class MapCache {protected static Map<String, User> map = new HashMap<>();

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

              try {List<User> userInfoList = userDAO.findAllUser();

                  for (User user : userInfoList) {map.put(user.getId, user);

                  }

              } catch (Exception e) {e.printStackTrace();

              }
              }

      }

  }


  /** 依据 id 查找 */

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

      }

      User user = map.get(id);

      return user;

  }


  /** 依据 name 查找 */

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

      }

      User user = new User();

      for (Map.Entry<String, User> entry : map.entrySet()) {if (entry.getValue().getName.equals(name)) {user = entry.getValue();

          }

      }

      return user;

  }


  /** 革除缓存 */

  public void clearCache() {synchronized (map) {map.clear();

      }

  }

}

正文完
 0