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

                SADD SADD key- name item [item ...]—— 將 一個 或 多個 元素 添加 到 集合 里面, 并 返回 被 添加 元素 當中 原本 并不 存在 于 集合 里面 的 元素 數量 SREM SREM key- name item [item ...]—— 從 集合 里面 移 除 一個 或 多個 元素, 并 返回 被 移 除 元素 的 數量 SISMEMBER SISMEMBER key- name item—— 檢查 元素 item 是否 存在 于 集合 key- name 里 SCARD SCARD key- name—— 返回 集合 包含 的 元素 的 數量 SMEMBERS SMEMBERS key- name—— 返回 集合 包含 的 所有 元素 SRANDMEMBER SRANDMEMBER key- name [count]—— 從 集合 里面 隨機 地 返回 一個 或 多個 元素。 當 count 為 正數 時, 命令 返回 的 隨機 元素 不會 重復; 當 count 為 負數 時, 命令 返回 的 隨機 元素 可能 會 出現 重復 SPOP SPOP key- name—— 隨機 地 移 除 集合 中的 一個 元素, 并 返回 被 移 除 的 元素 SMOVE SMOVE source- key dest- key item—— 如果 集合 source- key 包含 元素 item, 那么 從 集合 source- key 里面 移 除 元素 item, 并將 元素 item 添加 到 集合 dest- key 中; 如果 item 被 成功 移 除, 那么 命令 返回 1, 否則 返回 0 SDIFF SDIFF key- name [key- name ...]—— 返回 那些 存 在于 第一個 集合、 但不 存在 于 其他 集合 中的 元素( 數學上 的 差 集 運算) SDIFFSTORE SDIFFSTORE dest- key key- name [key- name ...]—— 將那 些 存 在于 第一個 集合 但 并不 存在 于 其他 集合 中的 元素( 數學上 的 差 集 運算) 存儲 到 dest- key 鍵 里面 SINTER SINTER key- name [key- name ...]—— 返回 那些 同時 存在 于 所有 集合 中的 元素( 數學上 的 交集 運算) SINTERSTORE SINTERSTORE dest- key key- name [key- name ...]—— 將那 些 同時 存在 于 所有 集合 的 元素( 數學上 的 交集 運算) 存儲 到 dest- key 鍵 里面 SUNION SUNION key- name [key- name ...]—— 返回 那些 至少 存在 于 一個 集合 中的 元素( 數學上 的 并 集 計算) SUNIONSTORE SUNIONSTORE dest- key key- name [key- name ...]—— 將那 些 至少 存在 于 一個 集合 中的 元素( 數學上 的 并 集 計算) 存儲 到 dest- key 鍵 里面 Set數據類型和List數據類型有點類似,也可以用來保存多個元素,但最大的一點區別在于Set數據類型不允許出現重復的元素,并且Set中的元素是無序的,所以沒辦法和List一樣通過索引下標獲取元素,但是Set類型支持多個Set集合取交集、并集、差集,所以合理使用Set數據類型,可以在實際項目開發中解決很多問題。Set數據類型有兩種數據結構:IntSet和HashTable。首先我們來看看IntSet的結構: typedef struct intset { // 編碼方式 uint32\_t enconding; // 集合包含的元素數量 uint32\_t length; // 保存元素的數組 int8\_t contents\[\]; } intset; 當Set集合中所有元素都為整型時,Redis才會使用IntSet數據結構。有一點需要格外注意的是:IntSet數據結構是有序的。因為為了減輕性能的消耗,Redis在Set集合元素都為整型時,會使用一種基于動態數組的結構體,同時在push元素的時候控制元素的大小順序,這樣就可以使用二分查找算法來對元素進行push及pop操作,這樣時間復雜度僅為O(logN)。在Set集合中元素存在非整型數據時,Redis這時會自動采用HashTable數據結構來存放數據,在HashTable中,存放的只有key值而沒有value值,所以說在HashTable中,鍵值永遠為null。我們可以看下HashTable的結構: typedef struct dict{ //類型特定函數 dictType \*type; //哈希表 兩個,一個用于實時存儲,一個用于rehash dictht ht\[2\]; //rehash索引 數據遷移時使用 unsigned rehashidx; } **Set數據類型使用場景:** * 記錄唯一值:比如登錄ip,身份證號 * 添加標簽:可以通過標簽的交并集計算用戶喜好程度等數據。
                  <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>

                              哎呀哎呀视频在线观看