最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Java Redis刪除HashMap中的key踩到的坑

 更新時(shí)間:2021年02月27日 09:55:11   作者:goblog  
這篇文章主要介紹了解決Java Redis刪除HashMap中的key踩到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

現(xiàn)象

Java使用Redis刪除HashMap中的key時(shí),取出對(duì)應(yīng)的HashMap后通過(guò)Java中HashMap的remove方法移除key然后重新調(diào)用redis的Hmset方法將覆蓋無(wú)效

示例代碼

//通過(guò)key取出對(duì)應(yīng)的HashMap
Map<String, String> ruleMap = jedisCluster.hgetAll("HashKey");
//通過(guò)java中移除HashMap中的Key
ruleMap.remove("ruleA");
//將移除后的HashMap重新存入redis的hashmap中
jedisCluster.hmset(key, ruleMap);
//問(wèn)題來(lái)了,這里通過(guò)HashKey從redis中取出HashMap時(shí)發(fā)現(xiàn)ruleA的key的內(nèi)容還在存在
Map<String, String> newRuleMap = jedisCluster.hgetAll("HashKey");
System.out.println(newRuleMap);

解決方案

通過(guò)hdel命令刪除指定HashMap中指定Key:

使用HDEL key field [field …]:

刪除哈希表 key 中的一個(gè)或多個(gè)指定域,不存在的域?qū)⒈缓雎?/p>

示例代碼

//通過(guò)redis中針對(duì)hashmap移除指定key函數(shù)進(jìn)行處理
jedisCluster.hdel("HashKey", "ruleA");

原理

redis中的散列表在進(jìn)行存儲(chǔ)值時(shí),只會(huì)將客戶端上送的hashmap中存在的key在redis中查找對(duì)應(yīng)的key值進(jìn)行覆蓋重寫(xiě),

至于通過(guò)Java代碼對(duì)該HashMap進(jìn)行的remove操作在redis中并不會(huì)感知到,

所以在通過(guò)HMSET函數(shù)進(jìn)行操作時(shí),redis只會(huì)找到key覆寫(xiě),不會(huì)執(zhí)行del操作,實(shí)際針對(duì)redis中的hashmap key的刪除只能通過(guò)HDEL函數(shù)

示例代碼

我們通過(guò)Jedis包中 redis.clients.jedis.BinaryClient.hmset方法的源碼來(lái)看,最終發(fā)往redis服務(wù)器執(zhí)行的命令時(shí)的操作

//實(shí)際上在發(fā)往redis執(zhí)行命令前,會(huì)將HashMap中的轉(zhuǎn)成字節(jié)數(shù)據(jù)集合
public void hmset(byte[] key, Map<byte[], byte[]> hash) {
  List<byte[]> params = new ArrayList();
  params.add(key);
  Iterator i$ = hash.entrySet().iterator();
  while(i$.hasNext()) {
    Entry<byte[], byte[]> entry = (Entry)i$.next();
    params.add(entry.getKey());
    params.add(entry.getValue());
  }
  this.sendCommand(Command.HMSET, (byte[][])params.toArray(new byte[params.size()][]));
}

實(shí)際對(duì)應(yīng)的redis命令即為:

redis 127.0.0.1:6379> HSET HashKey "ruleA" "valA" "ruleB" "valB"

補(bǔ)充:redis整體刪除,整個(gè)hash刪除,批量刪除,單個(gè)刪除,正則刪除

對(duì)于redis的hash數(shù)據(jù)結(jié)構(gòu)的刪除:

pool = redis.ConnectionPool(host='127.0.0.1',port=6381,db=0,decode_responses=True)
r = redis.Redis(connection_pool=pool)
pool = redis.ConnectionPool(host='127.0.0.1',port=6381,decode_responses=True)
r = redis.Redis(connection_pool=pool)
r = redis.Redis(host='127.0.0.1',port=6381,db=0,decode_responses=True)

以上三種連接數(shù)據(jù)庫(kù)的方式都測(cè)試過(guò)有效,主要是后面的decode_responses參數(shù)可以省去二進(jìn)制寫(xiě)入。

整個(gè)數(shù)據(jù)庫(kù)的刪除:

r.fushall()

批量刪除hash整體的大字典:

r.delete(*r.keys('^test'))   #表示刪除以test開(kāi)頭的hash大字典。
r.delete(key1,key2)#表示刪除key1字典和key2字典

整個(gè)hash字典刪除:

r.delete(dict_name)

批量刪除具體某個(gè)hash字典的多個(gè)鍵:

r.hdel(dict_name,key1)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java獲取本機(jī)IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))

    Java獲取本機(jī)IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))

    在IT領(lǐng)域獲取本機(jī)IP地址是一項(xiàng)基礎(chǔ)但重要的任務(wù),特別是在網(wǎng)絡(luò)編程、遠(yuǎn)程協(xié)作和設(shè)備通信中,這篇文章主要給大家介紹了關(guān)于Java獲取本機(jī)IP地址的方法(內(nèi)網(wǎng)、公網(wǎng)),需要的朋友可以參考下
    2024-07-07
  • 快速解決 MyBatis-Plus 中 ID 自增問(wèn)題(推薦)

    快速解決 MyBatis-Plus 中 ID 自增問(wèn)題(推薦)

    本文介紹了MyBatis-Plus中自動(dòng)生成ID過(guò)長(zhǎng)導(dǎo)致的問(wèn)題及解決方法,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-02-02
  • Java調(diào)用商品詳情API的項(xiàng)目實(shí)踐

    Java調(diào)用商品詳情API的項(xiàng)目實(shí)踐

    在現(xiàn)代電子商務(wù)網(wǎng)站中,商品詳情API是一個(gè)重要的組件,本文就來(lái)介紹一下Java調(diào)用商品詳情API的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • SpringBoot集成drools的實(shí)現(xiàn)示例

    SpringBoot集成drools的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot集成drools的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Spring Cloud Gateway 內(nèi)存溢出的解決方案

    Spring Cloud Gateway 內(nèi)存溢出的解決方案

    這篇文章主要介紹了Spring Cloud Gateway 內(nèi)存溢出的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java中的OPT算法實(shí)現(xiàn)方式

    java中的OPT算法實(shí)現(xiàn)方式

    這篇文章主要介紹了java中的OPT算法實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 解決Java變異出現(xiàn)錯(cuò)誤No enclosing instance of type XXX is accessible

    解決Java變異出現(xiàn)錯(cuò)誤No enclosing instance of type XXX is accessible

    這牌你文章主要給大家分享解決Java變異出現(xiàn)錯(cuò)誤,具體的饑餓絕方案請(qǐng)看下面文章的內(nèi)容,需要的朋友可以參考一下,希望能幫助到你
    2021-09-09
  • JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解

    JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解

    這篇文章主要介紹了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 詳解Java中類的加載順序

    詳解Java中類的加載順序

    Java中什么時(shí)候類加載,第一次需要使用類信息時(shí)加載。類加載的原則:延遲加載,能不加載就不加載。下面這篇文章主要介紹了Java中類的加載順序,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • SpringAnimation 實(shí)現(xiàn)菜單從頂部彈出從底部消失動(dòng)畫(huà)效果

    SpringAnimation 實(shí)現(xiàn)菜單從頂部彈出從底部消失動(dòng)畫(huà)效果

    最近做項(xiàng)目遇到這樣一個(gè)需求,要求實(shí)現(xiàn)一種菜單,菜單從頂部彈入,然后從底部消失,頂部彈入時(shí),有一個(gè)上下抖動(dòng)的過(guò)程,底部消失時(shí),先向上滑動(dòng),然后再向下滑動(dòng)消失。下面給大家?guī)?lái)了實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧
    2018-05-05

最新評(píng)論

澜沧| 英吉沙县| 甘孜县| 潍坊市| 旬邑县| 饶阳县| 宁安市| 图们市| 额敏县| 兴化市| 徐州市| 保定市| 景谷| 余姚市| 石狮市| 黄骅市| 灵台县| 循化| 民乐县| 诸暨市| 宜宾市| 四平市| 镇赉县| 赤水市| 台湾省| 贺兰县| 恩平市| 陇西县| 喀什市| 克拉玛依市| 镇巴县| 永嘉县| 竹溪县| 冷水江市| 丰城市| 佛冈县| 石楼县| 威宁| 进贤县| 阳城县| 安多县|