<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          redis面試知識(shí)點(diǎn)和內(nèi)存算法了解

          共 2135字,需瀏覽 5分鐘

           ·

          2021-05-10 00:48

          1 關(guān)于Redis 配置說(shuō)明

          1.1 關(guān)于Redis持久化的說(shuō)明

          redis默認(rèn)條件下支持?jǐn)?shù)據(jù)的持久化操作. 當(dāng)redis中有數(shù)據(jù)時(shí)會(huì)定期將數(shù)據(jù)保存到磁盤(pán)中.當(dāng)Redis服務(wù)器重啟時(shí) 會(huì)根據(jù)配置文件讀取指定的持久化文件.實(shí)現(xiàn)內(nèi)存數(shù)據(jù)的恢復(fù).

          1.2 持久化方式介紹

          1.2.1 RDB模式

          特點(diǎn):
          1.RDB模式是redis的默認(rèn)的持久化策略.
          2.RDB模式記錄的是Redis 內(nèi)存數(shù)據(jù)的快照. 最新的快照會(huì)覆蓋之前的內(nèi)容 所有RDB持久化文件占用空間更小 持久化的效率更高.
          3.RDB模式由于是定期持久化 所以可能導(dǎo)致數(shù)據(jù)的丟失.

          命令:

          1. save 要求立即馬上持久化 同步的操作 其他的redis操作會(huì)陷入阻塞的狀態(tài).

          2. bgsave 開(kāi)啟后臺(tái)運(yùn)行 異步的操作 由于是異步操作,所以無(wú)法保證rdb文件一定是最新的需要等待.

          配置:
          1.持久化文件名稱(chēng):


          2.持久化文件位置
          dir ./ 相對(duì)路徑的寫(xiě)法
          dir /usr/local/src/redis 絕對(duì)路徑寫(xiě)法


          3.RDB模式持久化策略


          1.2.2 AOF模式

          特點(diǎn):
          1.AOF模式默認(rèn)條件下是關(guān)閉的,需要用戶(hù)手動(dòng)的開(kāi)啟
          在這里插入圖片描述
          2. AOF模式是異步的操作 記錄的是用戶(hù)的操作的過(guò)程 可以防止用戶(hù)的數(shù)據(jù)丟失
          3. 由于AOF模式記錄的是程序的運(yùn)行狀態(tài) 所以持久化文件相對(duì)較大,恢復(fù)數(shù)據(jù)的時(shí)間長(zhǎng).需要人為的優(yōu)化持久化文件

          配置:


          1.2.3 關(guān)于持久化操作的總結(jié)

          1.如果不允許數(shù)據(jù)丟失 使用AOF方式
          2.如果追求效率 運(yùn)行少量數(shù)據(jù)丟失 采用RDB模式
          3.如果既要保證效率 又要保證數(shù)據(jù) 則應(yīng)該配置redis的集群 主機(jī)使用RDB 從機(jī)使用AOF

          2 關(guān)于Redis內(nèi)存策略

          2.1.1 關(guān)于內(nèi)存策略的說(shuō)明

          說(shuō)明:Redis數(shù)據(jù)的存儲(chǔ)都在內(nèi)存中.如果一直向內(nèi)存中存儲(chǔ)數(shù)據(jù) 必然會(huì)導(dǎo)致內(nèi)存數(shù)據(jù)的溢出.
          解決方式:

          1. 盡可能為保存在redis中的數(shù)據(jù)添加超時(shí)時(shí)間.

          2. 利用算法優(yōu)化舊的數(shù)據(jù).

          2.1.2 LRU算法

          特點(diǎn): 最好用的內(nèi)存優(yōu)化算法.
          LRU是Least Recently Used的縮寫(xiě),即最近最少使用,是一種常用的頁(yè)面置換算法,選擇最近最久未使用的頁(yè)面予以淘汰。該算法賦予每個(gè)頁(yè)面一個(gè)訪問(wèn)字段,用來(lái)記錄一個(gè)頁(yè)面自上次被訪問(wèn)以來(lái)所經(jīng)歷的時(shí)間 t,當(dāng)需淘汰一個(gè)頁(yè)面時(shí),選擇現(xiàn)有頁(yè)面中其 t 值最大的,即最近最少使用的頁(yè)面予以淘汰。
          維度: 時(shí)間 T

          2.1.3 LFU算法

          LFU(least frequently used (LFU) page-replacement algorithm)。即最不經(jīng)常使用頁(yè)置換算法,要求在頁(yè)置換時(shí)置換引用計(jì)數(shù)最小的頁(yè),因?yàn)榻?jīng)常使用的頁(yè)應(yīng)該有一個(gè)較大的引用次數(shù)。但是有些頁(yè)在開(kāi)始時(shí)使用次數(shù)很多,但以后就不再使用,這類(lèi)頁(yè)將會(huì)長(zhǎng)時(shí)間留在內(nèi)存中,因此可以將引用計(jì)數(shù)寄存器定時(shí)右移一位,形成指數(shù)衰減的平均使用次數(shù)。
          維度: 使用次數(shù)

          2.1.4 RANDOM算法

          隨機(jī)刪除數(shù)據(jù)

          2.1.5 TTL算法

          把設(shè)定了超時(shí)時(shí)間的數(shù)據(jù)將要移除的提前刪除的算法.

          2.1.6 Redis內(nèi)存數(shù)據(jù)優(yōu)化

          volatile-lru 設(shè)定了超時(shí)時(shí)間的數(shù)據(jù)采用lru算法
          2.allkeys-lru 所有的數(shù)據(jù)采用LRU算法
          3.volatile-lfu 設(shè)定了超時(shí)時(shí)間的數(shù)據(jù)采用lfu算法刪除
          4.allkeys-lfu 所有數(shù)據(jù)采用lfu算法刪除
          5.volatile-random 設(shè)定超時(shí)時(shí)間的數(shù)據(jù)采用隨機(jī)算法
          6.allkeys-random 所有數(shù)據(jù)的隨機(jī)算法
          7.volatile-ttl 設(shè)定超時(shí)時(shí)間的數(shù)據(jù)的TTL算法
          8.noeviction 如果內(nèi)存溢出了 則報(bào)錯(cuò)返回. 不做任何操作. 默認(rèn)值


          3 關(guān)于Redis 緩存面試題

          問(wèn)題描述: 由于海量的用戶(hù)的請(qǐng)求 如果這時(shí)redis服務(wù)器出現(xiàn)問(wèn)題 則可能導(dǎo)致整個(gè)系統(tǒng)崩潰.
          運(yùn)行速度:

          1. tomcat服務(wù)器 150-250 之間 JVM調(diào)優(yōu) 1000/秒

          2. NGINX 3-5萬(wàn)/秒

          3. REDIS 讀 11.2萬(wàn)/秒 寫(xiě) 8.6萬(wàn)/秒 平均 10萬(wàn)/秒

          3.1 緩存穿透

          問(wèn)題描述: 由于用戶(hù)高并發(fā)環(huán)境下訪問(wèn) 數(shù)據(jù)庫(kù)中不存在的數(shù)據(jù)時(shí) ,容易導(dǎo)致緩存穿透.
          如何解決: 設(shè)定IP限流的操作 nginx中 或者微軟服務(wù)機(jī)制 API網(wǎng)關(guān)實(shí)現(xiàn).

          3.2 緩存擊穿

          問(wèn)題描述: 由于用戶(hù)高并發(fā)環(huán)境下, 由于某個(gè)數(shù)據(jù)之前存在于內(nèi)存中,但是由于特殊原因(數(shù)據(jù)超時(shí)/數(shù)據(jù)意外刪除)導(dǎo)致redis緩存失效. 而使大量的用戶(hù)的請(qǐng)求直接訪問(wèn)數(shù)據(jù)庫(kù).
          俗語(yǔ): 趁他病 要他命
          如何解決:
          1.設(shè)定超時(shí)時(shí)間時(shí) 不要設(shè)定相同的時(shí)間.
          2.設(shè)定多級(jí)緩存


          3.3 緩存雪崩

          說(shuō)明: 由于高并發(fā)條件下 有大量的數(shù)據(jù)失效.導(dǎo)致redis的命中率太低.而使得用戶(hù)直接訪問(wèn)數(shù)據(jù)庫(kù)(服務(wù)器)導(dǎo)致崩潰,稱(chēng)之為緩存雪崩.
          解決方案:
          1.不要設(shè)定相同的超時(shí)時(shí)間 隨機(jī)數(shù)
          2.設(shè)定多級(jí)緩存.
          3.提高redis緩存的命中率 調(diào)整redis內(nèi)存優(yōu)化策略 采用LRU等算法.


          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99re在线视频播放 | www.色日 | 中文在线最新版天堂8 | 79色热在线 | 婷婷黄色电影 |