redis刪除hash的實(shí)現(xiàn)方式
redis刪除hash方式
在工作中遇到刪除hash類型的緩存時(shí)遇到了,怎樣也刪不掉redis里面的緩存,后來(lái)發(fā)現(xiàn),hash類型和string類型的換成刪除方式不一樣,所以在這里做一下整理,后面再有遇到其他類型的,還會(huì)陸續(xù)的完善。
詳細(xì)如下:


針對(duì)hash類型的緩存刪除,函數(shù):
因?yàn)樾枰獎(jiǎng)h除很多緩存內(nèi)容,所以在common.php寫(xiě)的公共函數(shù)進(jìn)行調(diào)用,
function processredis($type,$id=false,$code=false){
????????#這里的$type就是標(biāo)識(shí)需要?jiǎng)h除哪一塊的緩存類型,根據(jù)這個(gè)類型刪除相應(yīng)的緩存內(nèi)容。
????????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類型保存的值是一個(gè)map集合,又因?yàn)閞edis是key-value類型,故hash類型在redis中是key - map,即key - <field,value>。
Map的特點(diǎn)是存儲(chǔ)鍵值對(duì),也是無(wú)序不可重復(fù)的。
常用命令
(1)將鍵值對(duì)存入hash中:hset key field value

- 如果key是不存在的,會(huì)新建一個(gè)hash集。
- 如果field是hash中不存在,就加入該鍵值對(duì)。
- 如果field在hash中已經(jīng)存在,就覆蓋原來(lái)的值。
- 返回值:返回1表示field在hash中不存在,返回0表所示已經(jīng)存在。
(2)獲取指定hash集中該field的關(guān)聯(lián)值:hget key field

(3)存入多個(gè)值:hmset key field value [field value …]
- 取出多個(gè)值:hmget key field [field…]

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

- 顯然:返回的長(zhǎng)度是原h(huán)ash集長(zhǎng)度的2倍。
(5)刪除hash中的值:hdel key field [field…]

- 如果field有不存在的,就忽略該field,繼續(xù)執(zhí)行。
- 返回值:實(shí)際刪除元素的個(gè)數(shù),不包括那些忽略的。
(6)獲取hash集中元素的個(gè)數(shù):hlen key

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

- 返回值:1表示存在該字段,0表示該字段不存在,或者key不存在。
(8)獲取hash集中所有的字段名:hkeys key
- 獲取hash集中所有的值:hvals key

(9)hash集中指定字段值增加步長(zhǎng):hincrby key field i

- 返回值:執(zhí)行成功后字段的值。
- 如果key哈希集不存在,則新建一個(gè)hash集,并把field的值置為0,再執(zhí)行。
- 如果key存在,但field不存在,field也默認(rèn)置為0。
(10)hash集中指定字段值增加float型步長(zhǎng):hIncrByFloat key field f

- 如果field的值類型不是String,或者增加的值f不能轉(zhuǎn)為浮點(diǎn)型,都會(huì)報(bào)錯(cuò)。
(11)當(dāng)不存在指定字段時(shí)才賦值:hsetnx key field value

- 如果key不存在,會(huì)創(chuàng)建一個(gè)新的hash集。
- 返回值:1表示字段是個(gè)新的字段,成功賦值。0表示字段已存在,不執(zhí)行操作。
hash命令小結(jié)
增:
Hset key field valueHmset key field value [field value …]Hsetnx key field value
刪:
Hdel key field [field…]
查:
Hget key fieldHmget key field [field…]Hgetall keyHexists key fieldHkeys keyHvals key
改:無(wú)
其他:
Hincrby key field iHincrbyFloat key field f
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
百行代碼實(shí)現(xiàn)基于Redis的可靠延遲隊(duì)列
本文主要介紹了百行代碼實(shí)現(xiàn)基于Redis的可靠延遲隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
深入解析Redis的LRU與LFU算法實(shí)現(xiàn)
這篇文章主要重點(diǎn)介紹了Redis的LRU與LFU算法實(shí)現(xiàn),并分析總結(jié)了兩種算法的實(shí)現(xiàn)效果以及存在的問(wèn)題,并闡述其優(yōu)劣特性,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-07-07
redis通過(guò)lua腳本,獲取滿足key pattern的所有值方式
這篇文章主要介紹了redis通過(guò)lua腳本,獲取滿足key pattern的所有值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
redis?設(shè)置生存和過(guò)期時(shí)間的原理分析
這篇文章主要介紹了redis?設(shè)置生存和過(guò)期時(shí)間的原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
redis用list做消息隊(duì)列的實(shí)現(xiàn)示例
本文主要介紹了redis用list做消息隊(duì)列的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Redis實(shí)現(xiàn)分布式事務(wù)的示例
Redis雖不支持傳統(tǒng)SQL數(shù)據(jù)庫(kù)ACID特性的事務(wù),但提供了事務(wù)特性,允許多命令捆綁執(zhí)行,通過(guò)命令MULTI、EXEC、DISCARD、WATCH實(shí)現(xiàn),感興趣的可以了解一下2024-10-10

