溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)

發(fā)布時(shí)間:2022-07-29 09:39:48 來源:億速云 閱讀:332 作者:iii 欄目:開發(fā)技術(shù)

這篇“redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)”文章吧。

將數(shù)據(jù)庫的數(shù)據(jù)保存到redis緩存

當(dāng)?shù)谝淮尾樵儠r(shí),緩存沒有對應(yīng)的數(shù)據(jù),則會(huì)查詢數(shù)據(jù)庫,并將數(shù)據(jù)更新到緩存
當(dāng)緩存中有對應(yīng)的數(shù)據(jù)時(shí),則會(huì)直接訪問緩存,則不查詢數(shù)據(jù)庫
這樣在性能優(yōu)化上有很大的幫助

ProvinceServiceImpl

public class ProvinceServiceImpl implements ProvinceService {
    private ProvinceDao dao = new ProvinceDaoImpl();

    @Override
    public List<Province> findAll() {

        return dao.findAll();
    }

    /**
     * 使用redis緩存
     * @return
     */
    @Override
    public String findAllJson(){
        //1.先從redis中查詢數(shù)據(jù)
        //1.1獲取客戶端連接
        Jedis jedis = JedisUtils.getJedis();
        String province_json = jedis.get("province");

        //2.判斷province_json數(shù)據(jù)是否為null
        if(province_json == null || province_json.length() == 0){
            //redis中沒有數(shù)據(jù)
            System.out.println("redis中沒有數(shù)據(jù),查詢數(shù)據(jù)庫...");
            //2.1從數(shù)據(jù)庫中查詢
            List<Province> list = dao.findAll();

            //2.2將list序列化為json
            ObjectMapper mapper = new ObjectMapper();
            try {
                province_json = mapper.writeValueAsString(list);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }

            //2.3將json數(shù)據(jù)存入redis中
            jedis.set("province", province_json);

            //釋放資源
            jedis.close();
        }else {
            System.out.println("redis中有數(shù)據(jù),查詢緩存...");
        }

        return province_json;
    }
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="js/jquery-3.3.1.min.js"></script>

    <script>
        $(function (){
            //發(fā)送ajax請求,加載所有省份數(shù)據(jù)
            $.get("provinceServlet",{},function (data){
                //[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"廣州"},{"id":4,"name":"武漢"}]
                //1.獲取select
                var province = $("#province");
                //2.遍歷json數(shù)組
                $(data).each(function (){
                    //3.創(chuàng)建<option>
                    var option = "<option name='" + this +"'>" + this.name + "</option>";

                    //4.調(diào)用select的append方法追加
                    province.append(option);
                });

            });
        });
    </script>
<body>

    <select id="province">
        <option>---請選擇省份---</option>


    </select>
</body>
</html>

效果展示

第一次查詢時(shí)

redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)

redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)

此時(shí)可以看到redis沒有數(shù)據(jù),所以查詢了數(shù)據(jù)庫

第二次查詢

redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)

此時(shí)可以看到redis中已經(jīng)有緩存了,所以沒有查詢數(shù)據(jù)庫

注意

當(dāng)數(shù)據(jù)中的數(shù)據(jù)進(jìn)行增刪改時(shí),緩存的數(shù)據(jù)依舊不會(huì)改變,所以當(dāng)進(jìn)行增刪改操作后,應(yīng)該刪除redis中的緩存,然后在重新緩存,從而達(dá)到更新緩存的效果。

以上就是關(guān)于“redis如何緩存數(shù)據(jù)庫中數(shù)據(jù)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI