Java面试题大汇总

【Java面试题】什么是缓存击穿?如何解决?

2021-08-04  本文已影响0人  逐影随行

什么是缓存击穿?如何解决?

什么是缓存击穿

缓存击穿的意思是缓存中没有数据,而数据库中有数据。出现这一情况的原因一般是缓存到期。并且在其这个时候用户访问量很大,导致读缓存没有读到,都去访问数据库,造成数据库压力大。

image.png

解决方案

加锁方式解决缓存击穿伪代码

  //实现原理:只允许一个线程去访问数据库
    static Object lock = new Object();
    public List<String> getData02() {
        List<String> result = new ArrayList<String>();
        // 从缓存读取数据
        result = getDataFromCache();
        if (result.isEmpty()) {
            synchronized (lock) {
                // 从数据库查询数据
                result = getDataFromDB();
                // 将查询到的数据写入缓存
                setDataToCache(result);
            }
        }
        return result;
    }
上一篇 下一篇

猜你喜欢

热点阅读