<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # Redis 簡介 - Redis 支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。 - Redis 不僅僅支持簡單的 key-value 類型的數據,同時還提供 list,set,zset,hash 等數據結構的存儲。 - Redis 支持數據的備份,即 master-slave 模式的數據備份。 優勢: - 性能極高?– Redis 能讀的速度是110000 次/s,寫的速度是 81000次/s 。 - 豐富的數據類型 – Redis 支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。 - 原子 – Redis 的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過 MULTI 和 EXEC 指令包起來。 - 豐富的特性?– Redis 還支持 publish/subscribe, 通知, key 過期等等特性。 ## 配置 可以通過修改 redis.conf 文件或使用`CONFIG set`命令來修改配置。 ```shell redis 127.0.0.1:6379> CONFIG SET loglevel "notice" ``` ## 數據類型 Redis 支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(sorted set:有序集合) <span style="font-size:20px;">字符串</span> ```shell redis 127.0.0.1:6379> SET name "runoob" OK redis 127.0.0.1:6379> GET name "runoob" ``` 使用`GET`和`SET`命令可以獲取和設置鍵值對 <span style="font-size:20px;">哈希</span> ```shell redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World" "OK" redis 127.0.0.1:6379> HGET runoob field1 "Hello" redis 127.0.0.1:6379> HGET runoob field2 "World" ``` Redis hash 是一個鍵值 key=>value 對集合。 Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用于存儲對象。 使用 `HMSET`, `HGET`命令,`HMSET`設置了兩個 field=>value 對, `HGET`獲取對應 field 對應的 value <span style="font-size:20px;">列表</span> Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。 ```shell redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> lpush runoob redis (integer) 1 redis 127.0.0.1:6379> lpush runoob mongodb (integer) 2 redis 127.0.0.1:6379> lpush runoob rabitmq (integer) 3 redis 127.0.0.1:6379> lrange runoob 0 10 1) "rabitmq" 2) "mongodb" 3) "redis" redis 127.0.0.1:6379> ``` `lpush? name? value`在 key 對應 list 的頭部添加字符串元素 `rpush? name? value`在 key 對應 list 的尾部添加字符串元素 `lrem name? index`key 對應 list 中刪除 count 個和 value 相同的元素 `llen name`返回 key 對應 list 的長度 <span style="font-size:20px;">集合</span> ```shell redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> sadd runoob redis (integer) 1 redis 127.0.0.1:6379> sadd runoob mongodb (integer) 1 redis 127.0.0.1:6379> sadd runoob rabitmq (integer) 1 redis 127.0.0.1:6379> sadd runoob rabitmq (integer) 0 redis 127.0.0.1:6379> smembers runoob 1) "redis" 2) "rabitmq" 3) "mongodb" ``` `sadd key member`添加一個 string 元素到 key 對應的 set 集合中,成功返回1,如果元素已經在集合中返回 0,如果 key 對應的 set 不存在則返回錯誤 `smembers runoob`列出集合中的元素 <span style="font-size:20px;">有序集合</span> ```shell redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> zadd runoob 0 redis (integer) 1 redis 127.0.0.1:6379> zadd runoob 0 mongodb (integer) 1 redis 127.0.0.1:6379> zadd runoob 0 rabitmq (integer) 1 redis 127.0.0.1:6379> zadd runoob 0 rabitmq (integer) 0 redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000 1) "mongodb" 2) "rabitmq" 3) "redis" ``` `zadd key score member `添加元素到集合,元素在集合中存在則更新對應 score Redis zset 和 set 一樣也是 string 類型元素的集合,且不允許重復的成員。 不同的是每個元素都會關聯一個 double 類型的分數。redis 正是通過分數來為集合中的成員進行從小到大的排序。 zset 的成員是唯一的,但分數 score 卻可以重復。 ## 常用命令 `Keys pattern` 查找所有符合給定模式 pattern 的 key , * 表示匹配所有 `EXISTS key`檢查給定的 key 是否存在 `EXPIRE key seconds`為給定 key 設置過期時間,以秒計 `DEL key`該命令用于在 key 存在時刪除 key ***** `SET key value`設置指定 key 的值 `GET key`獲取指定 key 的值 ## questions <span style="font-size:18px;">什么是 Redis 持久化?Redis 有哪幾種持久化方式?優缺點是什么?</span> 持久化就是把內存的數據寫到磁盤中去,防止服務宕機了內存數據丟失。 Redis 提供了兩種持久化方式:RDB(默認)?和 AOF RDB 是 Redis DataBase 縮寫 核心函數: - `rdbSave` 生成 RDB 文件 - `rdbLoad` 從文件加載內存 ![](https://img.kancloud.cn/d7/11/d711b3d43f6af763cf25fde8422214b7_598x126.png =400x) AOF 是 Append-only file 縮寫 每當執行服務器(定時)任務或者函數時 flushAppendOnlyFile?函數都會被調用, 這個函數執行以下兩個工作 - WRITE:根據條件,將?aof\_buf?中的緩存寫入到 AOF 文件 - SAVE:根據條件,調用?fsync?或?fdatasync?函數,將 AOF 文件保存到磁盤中。 ![](https://img.kancloud.cn/b2/b4/b2b433df813c3a37af739d17b14c544d_564x222.png =400x) **比較**: 1、aof 文件比 rdb 更新頻率高,優先使用 aof 還原數據。 2、aof 比 rdb 更安全也更大 3、rdb 性能比 aof 好 4、如果兩個都配了優先加載 AOF <span style="font-size:18px;">Redis 有哪些架構模式?</span> ![](https://img.kancloud.cn/f0/57/f057cf24447d1ad8f8b9fd397c4ec299_426x241.png =400x) 特點:簡單 問題:內存容量有限、處理能力有限、無法高可用 <span style="font-size:18px;">什么是緩存穿透?如何避免?什么是緩存雪崩?何如避免?</span> - 緩存穿透 一般的緩存系統,都是按照 key 去緩存查詢,如果不存在對應的 value,就應該去后端系統查找(比如 DB)。一些惡意的請求會故意查詢不存在的 key,請求量很大,就會對后端系統造成很大的壓力。這就叫做緩存穿透。 如何避免? 1:對查詢結果為空的情況也進行緩存,緩存時間設置短一點,或者該 key 對應的數據 insert 了之后清理緩存。 2:對一定不存在的 key 進行過濾。可以把所有的可能存在的 key 放到一個大的 Bitmap 中,查詢時通過該 bitmap 過濾。 - 緩存雪崩 當緩存服務器重啟或者大量緩存集中在某一個時間段失效,這樣在失效的時候,會給后端系統帶來很大壓力。導致系統崩潰。 如何避免? 1:在緩存失效后,通過加鎖或者隊列來控制讀數據庫寫緩存的線程數量。比如對某個 key 只允許一個線程查詢數據和寫緩存,其他線程等待。 2:做二級緩存,A1 為原始緩存,A2 為拷貝緩存,A1 失效時,可以訪問 A2,A1 緩存失效時間設置為短期,A2 設置為長期 3:不同的 key,設置不同的過期時間,讓緩存失效的時間點盡量均勻。 # 參考鏈接 [https://www.cnblogs.com/jasontec/p/9699242.html](https://www.cnblogs.com/jasontec/p/9699242.html) [https://www.runoob.com/redis/redis-pub-sub.html](https://www.runoob.com/redis/redis-pub-sub.html)
                  <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>

                              哎呀哎呀视频在线观看