首頁 > 軟體

redis刪除hash的實現方式

2023-01-20 14:02:24

redis刪除hash方式

在工作中遇到刪除hash型別的快取時遇到了,怎樣也刪不掉redis裡面的快取,後來發現,hash型別和string型別的換成刪除方式不一樣,所以在這裡做一下整理,後面再有遇到其他型別的,還會陸續的完善。

詳細如下:

針對hash型別的快取刪除,函數:

因為需要刪除很多快取內容,所以在common.php寫的公共函數進行呼叫,

function processredis($type,$id=false,$code=false){
        #這裡的$type就是標識需要刪除哪一塊的快取型別,根據這個型別刪除相應的快取內容。

        if($type==1){
                #hash型別

                $XXXXXheart = $id;
                if($XXXXXheart ){
                    $key        = "{$XXXXXheart }";
                    $redisXXXid = $redisModel->hashDel("XXXXXX:XXXXXXX:XXXXX",$key);
                }

        }elseif($type == 2) {
                #string型別快取
                $chNum = $id;
                if($chNum != null){
                    $key        = "XXXXX:XXXXX:XXXX:".$chNum ;
                    $redisXXXXid = $redisModel->delete($key);
                }
       }

}

redis之hash型別解讀

redis中存取hash型別

Hash型別儲存的值是一個map集合,又因為redis是key-value型別,故hash型別在redis中是key - map,即key - <field,value>。

Map的特點是儲存鍵值對,也是無序不可重複的。

常用命令

(1)將鍵值對存入hash中:hset key field value

  • 如果key是不存在的,會新建一個hash集。
  • 如果field是hash中不存在,就加入該鍵值對。
  • 如果field在hash中已經存在,就覆蓋原來的值。
  • 返回值:返回1表示field在hash中不存在,返回0表所示已經存在。

(2)獲取指定hash集中該field的關聯值:hget key field

(3)存入多個值:hmset key field value [field value …]

  • 取出多個值:hmget key field [field…]

(4)獲取hash集中所有的欄位和值:hgetall key

  • 顯然:返回的長度是原hash集長度的2倍。

(5)刪除hash中的值:hdel key field [field…]

  • 如果field有不存在的,就忽略該field,繼續執行。
  • 返回值:實際刪除元素的個數,不包括那些忽略的。

(6)獲取hash集中元素的個數:hlen key

(7)判斷hash中是否存在指定欄位:hexists key field

  • 返回值:1表示存在該欄位,0表示該欄位不存在,或者key不存在。

(8)獲取hash集中所有的欄位名:hkeys key

  • 獲取hash集中所有的值:hvals key

(9)hash集中指定欄位值增加步長:hincrby key field i

  • 返回值:執行成功後欄位的值。
  • 如果key雜湊集不存在,則新建一個hash集,並把field的值置為0,再執行。
  • 如果key存在,但field不存在,field也預設定為0。

(10)hash集中指定欄位值增加float型步長:hIncrByFloat key field f

  • 如果field的值型別不是String,或者增加的值f不能轉為浮點型,都會報錯。

(11)當不存在指定欄位時才賦值:hsetnx key field value

  • 如果key不存在,會建立一個新的hash集。
  • 返回值:1表示欄位是個新的欄位,成功賦值。0表示欄位已存在,不執行操作。

hash命令小結

增:

  • Hset key field value
  • Hmset key field value [field value …]
  • Hsetnx key field value

刪:

  • Hdel key field [field…]

查:

  • Hget key field
  • Hmget key field [field…]
  • Hgetall key
  • Hexists key field
  • Hkeys key
  • Hvals key

改:無

其他:

  • Hincrby key field i
  • HincrbyFloat key field f

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com