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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                > **Redis-常用類型操作命令2(Hash/string)** [TOC] ## 說明 ## **記錄以下Redis常用類型的操作命令。** ---------- ## 哈希介紹 ## Redis 哈希(Hash) Redis hash 是一個 string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用于存儲對象。 Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。 ## Hash ## <h5>HSET(增加鍵值)</h5> > HSETNX:當且僅當域 field 尚未存在于哈希表的情況下, 將它的值設置為 value 。 > HMSET:同時將多個 field-value (域-值)對設置到哈希表 key 中。 HSET hash field value 將哈希表 hash 中域 field 的值設置為 value 。 將哈希表 hash 中域 field 的值設置為 value 。 如果給定的哈希表并不存在, 那么一個新的哈希表將被創建并執行 HSET 操作。 如果域 field 已經存在于哈希表中, 那么它的舊值將被新值 value 覆蓋。 ---------- 127.0.0.1:6379> hset user1 name zhangsan (integer) 1 127.0.0.1:6379> hset user1 age 19 (integer) 1 127.0.0.1:6379> hset user1 sex boy (integer) 1 127.0.0.1:6379> hgetall user1 1) "name" 2) "zhangsan" 3) "age" 4) "19" 5) "sex" 6) "boy" <h5>HGET(得到鍵值)</h5> > HGETAL:返回哈希表 key 中,所有的域和值。 > HMGET:返回哈希表 key 中,一個或多個給定域的值。 返回哈希表中給定域的值。 HGET 命令在默認情況下返回給定域的值。 如果給定域不存在于哈希表中, 又或者給定的哈希表并不存在, 那么命令返回 nil 。 ---------- 127.0.0.1:6379> hgetall user1 1) "name" 2) "zhangsan" 3) "age" 4) "19" 5) "sex" 6) "boy" 127.0.0.1:6379> hget user name (nil) 127.0.0.1:6379> hget user1 name "zhangsan" 127.0.0.1:6379> hgetall user (empty list or set) 127.0.0.1:6379> <h5>HEXISTS(檢驗鍵是否存在)</h5> HEXISTS hash field檢查給定域 field 是否存在于哈希表 hash 當中。 返回值 HEXISTS 命令在給定域存在時返回 1 , 在給定域不存在時返回 0 。 ---------- 127.0.0.1:6379> hexists user1 name (integer) 1 127.0.0.1:6379> hexists user1 phone (integer) 0 <h5>HDEL(刪除鍵值)</h5> HDEL key field [field …] 刪除哈希表 key 中的一個或多個指定域,不存在的域將被忽略。 在Redis2.4以下的版本里, HDEL 每次只能刪除單個域,如果你需要在一個原子時間內刪除多個域,請將命令包含在 MULTI / EXEC 塊內。 返回值:被成功移除的域的數量,不包括被忽略的域。 ---------- 127.0.0.1:6379> hgetall user1 1) "name" 2) "zhangsan" 3) "age" 4) "19" 5) "sex" 6) "boy" 127.0.0.1:6379> hdel user1 name (integer) 1 <h5>HLEN(得到hash長度)</h5> HLEN key:返回哈希表 key 中域的數量。 返回值:哈希表中域的數量。 當 key 不存在時,返回 0 。 ---------- 127.0.0.1:6379> hset user1 name zhangsan (integer) 1 127.0.0.1:6379> hset user1 age 19 (integer) 1 127.0.0.1:6379> hset user1 sex girl (integer) 1 127.0.0.1:6379> hgetall (error) ERR wrong number of arguments for 'hgetall' command 127.0.0.1:6379> hgetall user1 1) "name" 2) "zhangsan" 3) "age" 4) "19" 5) "sex" 6) "girl" 127.0.0.1:6379> hlen user1 (integer) 3 127.0.0.1:6379> <h5>HSTRLEN(返回指定鍵值的長度)</h5> > 可用版本:>= 3.2.0 HSTRLEN key field 返回哈希表 key 中, 與給定域 field 相關聯的值的字符串長度(string length)。 如果給定的鍵或者域不存在, 那么命令返回 0 。 返回值:一個整數。 ---------- redis> HMSET myhash f1 "HelloWorld" f2 "99" f3 "-256" OK redis> HSTRLEN myhash f1 (integer) 10 redis> HSTRLEN myhash f2 (integer) 2 redis> HSTRLEN myhash f3 (integer) 4 <h5>HSTRLEN(為指定鍵增加值)</h5> > HINCRBYFLOAT:為哈希表 key 中的域 field 加上浮點數增量 increment 。 為哈希表 key 中的域 field 的值加上增量 increment 。 增量也可以為負數,相當于對給定域進行減法操作。 如果 key 不存在,一個新的哈希表被創建并執行 HINCRBY 命令。 如果域 field 不存在,那么在執行命令前,域的值被初始化為 0 。 對一個儲存字符串值的域 field 執行 HINCRBY 命令將造成一個錯誤。 ---------- 127.0.0.1:6379> hincrby user1 age 1 (integer) 22 127.0.0.1:6379> hincrby user1 age -1 (integer) 21 <h5>HKEYS(返回所有鍵)</h5> HKEYS key:返回哈希表 key 中的所有域。 返回值:一個包含哈希表中所有域的表。 當 key 不存在時,返回一個空表。 ---------- 127.0.0.1:6379> hkeys user1 1) "name" 2) "age" 3) "sex" 127.0.0.1:6379> hkeys user2 (empty list or set) <h5>HVALS(返回所有值)</h5> HVALS key:返回哈希表 key 中所有域的值。 返回值:一個包含哈希表中所有值的表。 當 key 不存在時,返回一個空表。 ---------- 127.0.0.1:6379> hvals user2 (empty list or set) 127.0.0.1:6379> hvals user1 1) "zhangsan" 2) "21" 3) "girl" ##列表介紹## Redis 列表(List) Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊) 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。 ##List## <h5>LPUSH(增加元素)</h5> > RPUSH: 將一個或多個值 value 插入到列表 key 的表尾(最右邊)。 > RPUSHX:將值 value 插入到列表 key 的表尾,當且僅當 key 存在并且是一個列表。 LPUSH 將一個或多個值 value 插入到列表 key 的表頭 如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表頭: 比如說,對空列表 mylist 執行命令 LPUSH mylist a b c ,列表的值將是 c b a ,這等同于原子性地執行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三個命令。 如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。 返回值:執行 LPUSH 命令后,列表的長度。 ---------- 127.0.0.1:6379> lpush list 1 (integer) 1 127.0.0.1:6379> lpush list 2 (integer) 2 127.0.0.1:6379> rpush list 3 (integer) 3 127.0.0.1:6379> lrange list -0 -1 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> lpush list 3 (integer) 4 127.0.0.1:6379> lrange list -0 -1 1) "3" 2) "2" 3) "1" 4) "3" <h5>LPOP(移除元素)</h5> > RPOP:移除并返回列表 key 的尾元素。 LPOP key:移除并返回列表 key 的頭元素。 返回值:列表的頭元素。 當 key 不存在時,返回 nil 。 ---------- 127.0.0.1:6379> lpop list "3" 127.0.0.1:6379> lrange list -0 -1 1) "2" 2) "1" 3) "3" <h5>RPOPLPUSH(左刪除右增加)</h5> RPOPLPUSH source destination 命令 RPOPLPUSH 在一個原子時間內,執行以下兩個動作: 將列表 source 中的最后一個元素(尾元素)彈出,并返回給客戶端。 將 source 彈出的元素插入到列表 destination ,作為 destination 列表的的頭元素。 舉個例子,你有兩個列表 source 和 destination , source 列表有元素 a, b, c , destination 列表有元素 x, y, z ,執行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b , destination 列表包含元素 c, x, y, z ,并且元素 c 會被返回給客戶端。 如果 source 不存在,值 nil 被返回,并且不執行其他動作。 如果 source 和 destination 相同,則列表中的表尾元素被移動到表頭,并返回該元素,可以把這種特殊情況視作列表的旋轉(rotation)操作。 ---------- 127.0.0.1:6379> lrange list 0 -1 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> keys * 1) "list" 2) "user1" 127.0.0.1:6379> RPOPLPUSH list newlist "3" 127.0.0.1:6379> RPOPLPUSH list newlist "1" 127.0.0.1:6379> RPOPLPUSH list newlist "2" 127.0.0.1:6379> RPOPLPUSH list newlist (nil) 127.0.0.1:6379> lrange newlist 0 -1 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> <h5>LREM(刪除幾個固定元素)</h5> LREM key count value:根據參數 count 的值,移除列表中與參數 value 相等的元素。 count 的值可以是以下幾種: count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量為 count 。 count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量為 count 的絕對值。 count = 0 : 移除表中所有與 value 相等的值。 ---------- 127.0.0.1:6379> lpush list zhangsan (integer) 1 127.0.0.1:6379> lpush list lisi (integer) 2 127.0.0.1:6379> lpush list wangwu (integer) 3 127.0.0.1:6379> lpush list lisi (integer) 4 127.0.0.1:6379> lpush list wangwu (integer) 5 127.0.0.1:6379> lrange list 0 -1 1) "wangwu" 2) "lisi" 3) "wangwu" 4) "lisi" 5) "zhangsan" 127.0.0.1:6379> lrem list 1 lisi (integer) 1 127.0.0.1:6379> lrange list 0 -1 1) "wangwu" 2) "wangwu" 3) "lisi" 4) "zhangsan" 127.0.0.1:6379> lrem list 2 wangwu (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "lisi" 2) "zhangsan" 返回值 被移除元素的數量。 因為不存在的 key 被視作空表(empty list),所以當 key 不存在時, LREM 命令總是返回 0 。 <h5>LLEN(返回長度)</h5> LLEN key 返回列表 key 的長度。 如果 key 不存在,則 key 被解釋為一個空列表,返回 0 . 如果 key 不是列表類型,返回一個錯誤。 ---------- 127.0.0.1:6379> llen list (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "lisi" <h5>LINDEX(返回指定下標元素)</h5> LINDEX key index:返回列表 key 中,下標為 index 的元素。 下標(index)參數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。 如果 key 不是列表類型,返回一個錯誤。 返回值:列表中下標為 index 的元素。 如果 index 參數的值不在列表的區間范圍內(out of range),返回 nil 。 ---------- 127.0.0.1:6379> lrange list 0 -1 1) "lisi" 2) "zhangsan" 127.0.0.1:6379> lindex list 0 "lisi" 127.0.0.1:6379> lindex list 1 "zhangsan" 127.0.0.1:6379> lindex list 2 (nil) <h5>LINSERT(插入元素)</h5> LINSERT key BEFORE|AFTER pivot value 將值 value 插入到列表 key 當中,位于值 pivot 之前或之后。 當 pivot 不存在于列表 key 時,不執行任何操作。 當 key 不存在時, key 被視為空列表,不執行任何操作。 如果 key 不是列表類型,返回一個錯誤。 返回值:如果命令執行成功,返回插入操作完成之后,列表的長度。 如果沒有找到 pivot ,返回 -1 。 如果 key 不存在或為空列表,返回 0 。 ---------- 127.0.0.1:6379> lrange list 0 -1 1) "lisi" 2) "zhangsan" 127.0.0.1:6379> lrange list 0 -1 1) "lisi" 2) "wangwu" 3) "zhangsan" 127.0.0.1:6379> linsert list before lisi zhaoliu (integer) 4 127.0.0.1:6379> lrange list 0 -1 1) "zhaoliu" 2) "lisi" 3) "wangwu" 4) "zhangsan" <h5>LSET(更改下標元素)</h5> LSET key index value 將列表 key 下標為 index 的元素的值設置為 value 。 當 index 參數超出范圍,或對一個空列表( key 不存在)進行 LSET 時,返回一個錯誤。 ---------- 127.0.0.1:6379> lset list 0 zhangxiaoliu OK 127.0.0.1:6379> lindex list 0 "zhangxiaoliu" <h5>LRANGE(返回范圍元素)</h5> LRANGE key start stop:返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。 下標(index)參數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。 注意LRANGE命令和編程語言區間函數的區別 假如你有一個包含一百個元素的列表,對該列表執行 LRANGE list 0 10 ,結果是一個包含11個元素的列表,這表明 stop 下標也在 LRANGE 命令的取值范圍之內(閉區間),這和某些語言的區間函數可能不一致,比如Ruby的 Range.new 、 Array#slice 和Python的 range() 函數。 超出范圍的下標 超出范圍的下標值不會引起錯誤。 如果 start 下標比列表的最大下標 end ( LLEN list 減去 1 )還要大,那么 LRANGE 返回一個空列表。 如果 stop 下標比 end 下標還要大,Redis將 stop 的值設置為 end 。 返回值:一個列表,包含指定區間內的元素。 ---------- 127.0.0.1:6379> lrange list 0 1 1) "zhangxiaoliu" 2) "lisi" 127.0.0.1:6379> lrange list 0 4 1) "zhangxiaoliu" 2) "lisi" 3) "wangwu" 4) "zhangsan" 127.0.0.1:6379> lrange list 0 -1 1) "zhangxiaoliu" 2) "lisi" 3) "wangwu" 4) "zhangsan" <h5>LTRIM(刪除范圍的的元素)</h5> LTRIM key start stop:對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 舉個例子,執行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三個元素,其余元素全部刪除。 下標(index)參數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。 當 key 不是列表類型時,返回一個錯誤。 LTRIM 命令通常和 LPUSH key value [value …] 命令或 RPUSH key value [value …] 命令配合使用,舉個例子: LPUSH log newest_log LTRIM log 0 99 這個例子模擬了一個日志程序,每次將最新日志 newest_log 放到 log 列表中,并且只保留最新的 100 項。注意當這樣使用 LTRIM 命令時,時間復雜度是O(1),因為平均情況下,每次只有一個元素被移除。 返回值:命令執行成功時,返回 ok 。 ---------- 127.0.0.1:6379> ltrim list 1 2 OK 127.0.0.1:6379> lrange list 0 -1 1) "lisi" 2) "wangwu" <h5>BLPOP</h5> > 詳解: http://redisdoc.com/list/blpop.html BLPOP 是列表的阻塞式(blocking)彈出原語。 它是 LPOP key 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被 BLPOP 命令阻塞,直到等待超時或發現可彈出元素為止。 ## 結尾 ## <p style="background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%,#ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);color: transparent;-webkit-text-fill-color: transparent;-webkit-background-clip: text;text-align:center;"> 腹有詩書氣自華,最是書香能致遠。 </p>
                  <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>

                              哎呀哎呀视频在线观看