<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 介紹 Redis使用了單線程架構和I/O多路復用模型來實現高性能的內存數據庫服務。 - 為什么要用單線程? ``` Redis是基于內存的存儲。本身性能足夠高了,沒必要多線程。 --官方解釋 ``` ![](https://box.kancloud.cn/1af5535b6fe5e955a03b44d4b147c809_918x547.png) - 非阻塞I/O多路復用 ``` 多路復用: 一個線程處理所有請求。 比喻就是: 一個程序員處理所有問題,前端來活干前端,后臺來活干后端。 非阻塞: 不必等完全處理完前端任務再去處理后臺。 ``` ![](https://box.kancloud.cn/25013a1a8c09c327175e9d672138a406_924x538.png) # 基礎數據類型 ### string - 字符串類型的內部編碼 ``` int:8個字節的長整型 embstr:小于等于39個字節的字符串 raw:大于39個字節的字符串 Redis會根據當前值的類型和長度決定使用哪種內部編碼實現。 ``` ![](https://box.kancloud.cn/3df98103a656126c880c12b178283e07_800x147.png) **常用API算法時間復雜度**** ![](https://box.kancloud.cn/0e7fbadaa8cb0c268e285ec3920be474_963x519.png) ### hash - 是一個string類型的用來存儲key,field,value的鍵值對的映射表,添加和刪除時間復雜度都為O(1) ``` ·ziplist(壓縮列表):當哈希類型元素個數小于hash-max-ziplist-entries配置(默認512個)、同時所有值都小于hash-max-ziplist-value配置(默認64字節)時,Redis會使用ziplist作為哈希的內部實現 ·hashtable(哈希表):當哈希類型無法滿足ziplist的條件時,Redis會使用hashtable作為哈希的內部實現,因為此時ziplist的讀寫效率會下降,而hashtable的讀寫時間復雜度為O(1) ``` ![](https://box.kancloud.cn/5895f5b110062455d3c5957ed0883bad_779x159.png) **常用API算法時間復雜度** ![](https://box.kancloud.cn/9b3ff6f11cfce5bb10cdb079b5389b93_967x629.png) ### list - 列表類型,存儲類似一維數組數據 ``` 2種編碼實現 1. ziplist(壓縮列表) 元素個數小于配置(默認512),每個元素大小小于64字節(默認) 2. linkedlist(鏈表) 當列表類型無法滿足ziplist的條件時,Redis會使用linkedlist作為列表的內部實現 3. Redis3.2版本提供了quicklist內部編碼,簡單地說它是以一個ziplist為節點的linkedlist,它結合了ziplist和linkedlist兩者的優勢,為列表類型提供了一種更為優秀的內部編碼實現 ``` ![](https://box.kancloud.cn/8e4389b32f18c2a17c0a265b58fc10db_291x142.png) **常用API算法時間復雜度** ![](https://box.kancloud.cn/98452ee564f1509e7c532fd47ec307bb_958x428.png) ### set - 集合類型 ``` intset(整數集合):當集合中的元素都是整數且元素個數小于set-maxintset-entries配置(默認512個)時,Redis會選用intset來作為集合的內部實現,從而減少內存的使用。 hashtable(哈希表):當集合類型無法滿足intset的條件時,Redis會使用hashtable作為集合的內部實現。 ``` 3.2.6 目前是用hashtable ![](https://box.kancloud.cn/55009dbf6c1f757cd31af2bf493f36b9_267x80.png) **常用API算法時間復雜度** ![](https://box.kancloud.cn/10c80469fd24452334b6f1c1e4c51fcf_977x386.png) ### zset - 有序集合 ``` ziplist(壓縮列表):當有序集合的元素個數小于zset-max-ziplistentries配置(默認128個),同時每個元素的值都小于zset-max-ziplist-value配置(默認64字節)時,Redis會用ziplist來作為有序集合的內部實現。 skiplist(跳躍表):當ziplist條件不滿足時,有序集合會使用skiplist作為內部實現,因為此時ziplist的讀寫效率會下降。 ``` ![](https://box.kancloud.cn/e935e806578217a0f9e6c528e851adcc_273x116.png) ![](https://box.kancloud.cn/eafa7c8a16678a31288eba205a727b54_929x92.png) **常用API算法時間復雜度** ![](https://box.kancloud.cn/08e9b6fe6723d599836fc0f2e6c816b6_960x748.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看