<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 * * * * * Redis從 2. 8版本正式提供了高可用實現Redis Sentinel,它能夠保證Redis節點的故障發現和故障自動轉移。Redis從3. 0版本正式提供了分布式實現Redis Cluster,它是Redis真正的分布式實現,提供了高可用、讀寫和容量的擴展性。 ## 1. 數據類型 * redis支持的數據類型主要有string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)五種。 * redis所有的鍵都是字符串類型, 而且其他幾種數據結構都是在字符串類型基礎上構建的,所以字符串類型能為其他四種數據結構的基礎。 ### 1.1 string字符串類型 * * * * * * 字符串是redis數據結構的基礎,除了可以存儲簡單的字符串之外,還可以存儲JSON、XML、二進制(圖片、音頻、視頻...)等。 * * * * * #### 1.1.1字符串常用的操作命令 說明:k 代表鍵,v 代表值 | 命令 | 說明 | | --- | --- | | set k v |設置鍵值對 | | setex k seconds v |設置鍵值對,并添加過期時間 | | setnx k seconds v |當鍵不存在時,設置鍵值對 | | setnx k seconds v | 當鍵存在時,設置鍵值對 | | get k |獲取對應鍵的值,不存在返回nil | |getrange k start end| 獲取對應值指定位置字符串從零開始| | mset k v (kv)... |批量設置多個鍵值對 | | mset k (k)... |批量設置多個鍵值對 | | incr k |對鍵對應得值進行自增操作 | | incrby k 數值 | 對鍵對應得值增加指定的數量 | |decrby k 數值 |對鍵對應得值增加指定的數量 | |append k v| 對值進行追加| * 批量操作命令可以在開發中提高執行效率。 * * * * * ### 1.2 hash(哈希) * redis的是一種鍵值對的套用,一個鍵的值包含了多個鍵值對。 * hash適合存儲具有多個信息的記錄,通過序列化可以提高內存使用效率。 * * * * * #### 1.2.1常用命令 * 說明:f代表hash,k代表hash中的鍵,v代表鍵的值 | 命令 |說明 | | --- | --- | | hset f k v |設置hash的鍵值對 | | hget f k |獲取hash對應鍵的值 | | hset f k v ...| 批量設置hash的多個鍵值對 | | hmget f k... |批量獲取hash中多個鍵的值 | | hkeys f | 獲取所有值 | | hexists f k |判斷是否存在k | | hgetall f|獲取所有的鍵值對 | | hincrby f k |自增 | * * * * * ### 1.3 List(列表) * List用來存儲多個有序的字符串,在實際的開發中可以作為棧和隊列使用。 * List中的element是有序的,并且可以重復。 * * * * * #### 1.3.1 List命令 * 說明:L代表List,v代表List中的值,nv代表新值。 | 命令 | 說明 | | --- | --- | |lrange 0 -1 |從左到右獲取列表的值 | | rpush L v... | 從List的右側插入值 | | lpush L v... | 從List的左側插入值 | | lrange k start end |獲取指定范圍內的列表 | | lrem L count v |找到對應得值,并根據count的正負向左或者向右刪除count個值 | | ltrim L start end |截取指定范圍的List | | lset L index nv |截取指定范圍的List | | lpop l v|從左彈出值 | | lpop l v|從右彈出值 | * List的阻塞操作 | 命令 |說明 | | --- | --- | | blpop k time|根據time阻塞等待從左查詢List數據,time=0阻塞等待,否則為固定時間 | | brpop k time|根據time阻塞等待從右查詢List數據,time=0阻塞等待,否則為固定時間 | * * * * * #### 1.3.2 List適用場景 * 棧 lpush + lpop 先進后出模型(左插左彈) * 隊列 lpush + rpop 先進先出模型(左插右彈) * 阻塞隊列 lpush + brpop 消息隊列(阻塞獲取值) * * * * * ### 1.4 set(集合) * 無序 * 不可重復 * 不能通過下表獲取元素 * redis支持集合的交集、并集、差集操作 * * * * * #### 1.4.1集合相關命令 * 說明s代表集合,e代表元素 | 命令 | 說明 | | --- | --- | | sadd s e... |向集合中插入一個或者多個值 | | srem s e... |向集合中刪除一個或者多個值 | | spop s |集合中隨機彈出一個值 | | sismember s e |判斷元素是否存在集合中 | | smembers s |獲取集合所有元素 | | scard s|時間復雜度O(1)計算集合元素個數 | | sadd s e... |向集合中插入一個或者多個值,存在返回1,不存在返回0 | | srandmem s count |從集合中隨機彈出 | | sinter s1 s2 |求兩個集合的交集 | | sunion s1 s2 |求兩個集合的并集 | | sdiff s1 s2.... |求s1與兩個或者多個集合的差并集 | | sunion或sinter或sdiff+strore ...|集合操作的結果保存起來 | * * * * * #### 1.4.2 set編碼方式 * intset(整數集合):當集合中的元素都是整數且元素個數小于set-max-intset-entries配置(默認512個)時,Redis會選用intset來作為集合的內部實現,從而減少內存的使用。 * hashtable(哈希表):當集合類型無法滿足intset的條件時(元素個數大于512),Redis會使用hashtable作為集合的內部實現。 * object encodeing key :查看元素編碼類型 * * * * * #### 1.4.3 set使用場景 * 標簽 對事物進行特性的描述,例如可以在電影推薦領域,對某一用戶進行標簽,體現用戶可能喜歡那種類型的電影,喜歡的影星,導演,有了這些標簽可以對用戶進行個性化的推薦。 * spop 隨機性事物 * * * * * ### 1.5 zset(有序集合) * 不可重復 * 有序 * 元素依靠對應的分值進行排序 * * * * * #### 1.5.1 有序集合相關命令 * 說明:zk代表有序集合,score代表元素的分值,v代表元素 |命令|說明 | | --- | --- | | zadd zk score v ... | 像有序集合中添加元素 | | zcard zk |查看元素個數 | | zscore zk v |查看元素的分值 | | zrank zk v |查看元素的排名 | | zrem zk v |刪除元素 | | zincryby zk n v |給元素增加n分 | | zrange zk start end withscores |從低到高返回指定范圍的元素 | | zrevrange zk start end withscores |與zrang正好相反 | |zrangebyscore zk min max withscores|從低到高返回一定分值范圍的元素| |zrevrangebyscore zk min max withscores|與zrangebyscore正好相反| |zcount min max|返回范圍內的成員個數| |zremrangebyrank start end |刪除指定范圍排名的元素| |zremrangebyscore min max |刪除指定范圍分數的元素| * * * * * * 集合在進行集合運算后,可以對分值進行aggregate(聚合),聚合又三種方式:sum(取和)、min(取最小值)、max(取最大值) * 分值操作命令 * 并集 zunionstore <destination> <numkeys> zk1 zk2 <weights> 1 n <aggregate> [sum、min、max] ---destination 指的是將兩個集合并集操作后的結果保存 這是一個鍵 --- numkeys 需要做交集計算鍵的個數 ---weights zk2的權重,默認是1,這里把zk2的分值乘以n ---aggregate 把合并后的兩個元素對應的分值求和(sum默認)、取最小值(min)、取最大值(max) * 交集 zinterstore <destination> <numkeys> zk1 zk2 <weights> 1 n <aggregate> [sum、min、max] ---destination 指的是將兩個集合交集操作后的結果保存 這是一個鍵 --- numkeys 需要做交集計算鍵的個數 ---weights zk2的權重,默認是1,這里把zk2的分值乘以n ---aggregate 把合并后的兩個元素對應的分值求和(sum默認)、取最小值(min)、取最大值(max) * * * * * #### 1.5.2 內部編碼 * ziplist(壓縮列表) 當有序集合的元素個數小于zset-max-ziplist-entries配置(默認128個),同時每個元素的值都小于zset-max-ziplist-value配置(默認64字節)時,Redis會用ziplist來作為有序集合的內部實現,ziplist可以有效減少內存的使用. * skiplist(跳躍表) 當ziplist條件不滿足時,有序集合會使用skiplist作為內部實現,因為此時ziplist的讀寫率會效下降。 * * * * * #### 1.5.3 適用場景 * 由于zset的元素的有序性,非常適合排行類的業務場景 * * * * * ### 1.6 Bitmaps * Bitmaps是一種可以對位操作的字符串 * Bitmaps 類似于一個以位為單位的數組,數組的下表在Bitmaps中被叫做偏移量,由于是位,所以值只有0或者1 #### 1.6.1 命令 | 命令 |說明 | | --- | --- | | setbit k offset value |設置鍵的第offset位的值(從0開始))| |getbit k offset|獲取鍵的第offset位置的值 | |bitcount k [start end]|獲取鍵(范圍)的值為以1的個數 | |bitops k 1|查看第一個出現1的偏移量 | * bitop op destkey key[ key....] bitop是一個復合操作,它可以做多個Bitmaps的 and(交集)、or(并集)、not(非)、xor( 異或)操作并將結果保存在destkey中。 * * * * * ### 1.6.2 場景 * 適合存在是否的場景 在是(1)存在較多的情況下要比其他數據結構省內存 ### 2. 全局命令 | 命令 | 說明 |時間復雜度 | | --- | --- | --- | | keys * | 掃描所有鍵 | o(n) | | dbsize | 獲取鍵總數 | o(1) | | del key...|刪除key | o(1) | | expire key seconds|設置過期時間 | o(1) | | ttl key|查看過期時間 | o(1) | | type key|查看key對應的value的類型 | o(1) | ### 1.7 HyperLogLog > 相對于集合 比較省內存 > * pfadd :向HyperLogLog插入數據 > * pfcount | 命令 | 說明 | | --- | --- | | pfadd key element... | 向HyperLogLog中插入數據 | | pfadd key element... | 查詢HyperLogLog中數據 數量 |
                  <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>

                              哎呀哎呀视频在线观看