浅谈java缓存机制自己编写cacheutil工具类

缓存的意义在于高效的读取高命中率的数据库信息避免高频的访问数据库,便捷的读取常用的、全局的配置信息。

什么是缓存

缓存(英语:cache,/kæʃ/ kash ),这里讨论的不是计算机组成中的缓存,而是编程实现中的一种机制;是指存放在服务器内存中的数据,特点是可以高速存取

缓存机制的使用场景

  • 存取全局的数据
  • 存取数据库中高频访问的数据

使用java实现一个缓存工具类

既然缓存的特点就是高速存取,按键值存取,那么在java编程中实现缓存机制首选的数据结构就是map,不得不说map数据结构真的很神奇,有关于map的性能效率问题参见我的另外一篇博客hashmap性能效率分析
但是需要注意的是map不是线程安全的数据结构,所以使用的时候可以需要做线程安全控制,或者直接使用java高并发包中提供的ConcurrentHashMap;

因为是本机应用内实现的缓存机制,为了不影响服务的性能,建议存取一些全局配置,或者少量数据数据,类似小说章节缓存等大数据量缓存不适用,另外此实现没有过期概念,适合存储长久有效的数据

缓存工具类

因为是工具类,并且为了全局获取便利,使用单例模式实现,持有一个map对象

    private CacheUtil()
    {
    }

    private  ConcurrentHashMap<Object,Object> hm = new ConcurrentHashMap<>();

    private static class CacheUtilHandle 
    { 
        static CacheUtil instance = new CacheUtil(); 
    }

	public static CacheUtil getInstance() {
		return CacheUtilHandle.instance;
	}

为缓存工具增加四个方法,方便存取

public void add(Object pk, Object obj)
    {
        hm.put(pk, obj);
    }

    public void update(Object pk, Object obj)
    {
        hm.put(pk, obj);
    }

    public  void delete(Object pk)
    {
        hm.remove(pk);
    }

    public  Object query(Object pk)
    {
        return hm.get(pk);
    }

一个简洁缓存工具就编写完成了,

使用:

如果是javaWeb项目可以在项目启动类中初始化缓存,例如在启动类中从数据库加载初始化一些系统全局配置,避免频繁读取数据库;

高效的缓存数据库

非关系型数据库 :redis,缓存数据库memcache等,配置成单独的缓存服务器,可以提供高性能的缓存服务,例如小说站章节内容的存取,并且可以设置过期时间;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iwuxingyun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值