Redis類型之Hash

1.hash常用操作?

? ? ? 這里還是要強調,redis的類型指的是value的類型。故而這里的hash是把key這一層組織完成以后,到了value這一層,value的其中一種類型還可以是hash。

1.1 HSET 和 HGET

????????HSET:設置hash類型的key

HSET key field value [field value ...]

? ? ? ? 返回值是設置成功的鍵值對(field-value)的個數

????????HGET:獲取對應key中對應field的值

HGET key field

? ? ? ? 返回值為查詢key中對應的field對應的value,如果不存在則返回nil

1.2 HDEL

????????HDEL:刪除hash中指定的字段

? ? ? ? 注意:del刪除的key而hdel刪除的field

HDEL key field [field ...]

? ? ? ? 返回值為本次操作刪除的字段個數

1.3 HKEYS

? ? ? ? HKEYS:這個操作,先根據key找到對應的value(hash),然后再遍歷value

HKEYS key

? ? ? ? 返回值就是這個key中所有的field? ? ? ??

? ? ? ? 我上面這個操作存在一定的風險,就類似于之前的keys * ,如果key中的hash存在大量的field就有可能讓我們的redis阻塞住。

1.4 HVALS

? ? ? ? HVALS:和hkeys相對能夠獲取到hash中的所有value

HVALS key

? ? ? ? 返回值就是對應key中的所有field對應的值

1.5 HGETALL?

? ? ? ? HGETALL:查詢value中的所有數據

HGETALL key

? ? ? ? 返回值就是value中的所有數據包括field和value

????????

? ? ? ? 其實上面這樣的操作風險還是有億點大的,多數情況下,不需要查詢所有的field,可能只需要查其中的幾個field

1.6 HLEN

? ? ? ? HLEN:獲取hash的元素個數,不需要遍歷

HLEN key

? ? ? ? 返回值就是hash的長度

1.7 HSETNX

? ? ? ? HSETNX:類似于setnx。不存在的時候,才能設置成功,如果存在則失敗。

HSETNX key field value

????????

1.8 常用操作小結

命令執行效果時間復雜度
hset key field value設置值O(1)
hget key field獲取值O(1)
hdel key field [field ...]刪除fieldO(k)
hlen key計算field個數O(1)
hgetall key獲取所有的field-valueO(k)
hmget field [field ...]批量獲取field-valueO(k)
hmset field value [field value ...]批量設置field-valueO(k)
hexists key field判斷field是否存在O(1)
hkeys key獲取所有的fieldO(k)
hvals key獲取所有的valueO(k)
hsetnx key field value設置值,但必須再field不存在時才能設置成功O(1)
hincrbykey field n對應field-value + nO(1)
hincrbyfloat key field n對應field-value + nO(1)
hstrlen key field計算value的字符串長度O(1)

2.redis中的hash的內部編碼

? ? ? ? rar、zip、gzip、7z...這些是具體的壓縮算法

? ? ? ? 壓縮的本質是針對數據進行重新編碼。不同的數據,有不同的特點,結合這些特點,進行精妙的設計,重新編碼之后,就能縮小體積。類似的例子如下

2.2 ziplist

? ? ? ? ziplist存在的目的就是節省空間,ziplist內部的數據結構是精心設計的

? ? ? ? 使用hash來表示一個普通的hash表,可能會浪費一定的空間(hash首先是一個數組,數組上有些位置有元素,有些沒有)

????????

3.redis中的hash的應用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92741.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache Pulsar性能與可用性優化實踐指南

Apache Pulsar性能與可用性優化實踐指南 一、技術背景與應用場景 隨著微服務、實時計算和大數據平臺的普及,消息系統承擔了海量數據的傳輸與解耦任務。Apache Pulsar作為新一代分布式消息與流處理系統,擁有多租戶、持久化存儲和靈活一致性的特點&#xf…

工單分類微調訓練運維管理工具原型

簡述需求進展之前,我嘗試用Longformer模型來訓練工單分類系統,但問題很快就暴露出來:Longformer訓練時間長得讓人抓狂,每次訓練只能針對一個租戶的數據,無法快速適配多個租戶的需求。切換一個使用相同標簽的租戶還能夠…

@CacheConfig??當前類中所有緩存方法詳解

CacheConfig??當前類中所有緩存方法詳解在 Spring Cache 抽象中,CacheConfig 是一個??類級別注解??,用于為??當前類中的所有緩存方法(如 Cacheable、CachePut、CacheEvict)提供默認配置??。其核心作用是??避免在每個方…

正確使用SQL Server中的Hint(10)—Hint簡介與Hint分類及語法(1)

9.5. 正確使用Hint 9.5.1. Hint簡介 與Oracle等其他關系庫類似,SQL Server中,也提供了諸多Hint用于支持SQL調優,那就是通過正確應用Hint技術,可以指示CBO為SQL語句產生和選擇最合理而高效的查詢計劃。Hint確實可以做到很容易的對CBO產生影響,但因為多數場景中,CBO都能為…

Redis的分布式序列號生成器原理

Redis 分布式序列號生成器的核心原理是利用 Redis 的原子操作和高性能特性,在分布式系統中生成全局唯一、有序的序列號。其設計通常結合業務需求(如有序性、長度限制、高并發),通過 Redis 的原子命令(如 INCR、INCRBY&…

2025年SEVC SCI2區,基于深度強化學習與模擬退火的多無人機偵察任務規劃,深度解析+性能實測

目錄1.摘要2.問題定義3.SA-NNO-DRL方法4.結果展示5.參考文獻6.算法輔導應用定制讀者交流1.摘要 無人機(UAV)因其高自主性和靈活性,廣泛應用于偵察任務,多無人機任務規劃在交通監控和數據采集等任務中至關重要,但現有方…

汽車娛樂信息系統域控制器的網絡安全開發方案

引言1.1 項目背景隨著汽車行業的快速發展和智能化、網聯化的趨勢日益明顯,汽車娛樂信息系統(In-Vehicle Infotainment System,IVIS)已經成為現代汽車的重要組成部分。汽車娛樂信息系統不僅提供了豐富的多媒體功能,如音…

【論文閱讀】Deep Adversarial Multi-view Clustering Network

摘要多視圖聚類通過挖掘多個視圖之間的共同聚類結構,近年來受到了越來越多的關注。現有的大多數多視圖聚類算法使用淺層、線性嵌入函數來學習多視圖數據的公共結構。然而,這些方法無法充分利用多視圖數據的非線性特性,而這種特性對于揭示復雜…

Redis - 使用 Redis HyperLogLog 進行高效基數統計

文章目錄引言HyperLogLog 工作原理Spring Boot 集成 Redis1. 添加依賴2. 配置 Redis 連接3. Redis 配置類HyperLogLog 實戰應用1. 基礎操作服務類2. 網站日活躍用戶統計3. 性能測試與誤差分析應用場景分析適用場景不適用場景性能優化技巧與傳統方案對比結論引言 在數據分析和監…

後端開發技術教學(三) 表單提交、數據處理

上回:後端開發技術教學(二) 條件指令、循環結構、定義函數 -CSDN博客 必要資源: trae中文版下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一鍵部署 PHP 開發環境 小皮出品 目錄 一、表單提交 1.1 get & post 1.…

Python訓練Day39

浙大疏錦行 圖像數據的格式:灰度和彩色數據模型的定義顯存占用的4種地方 模型參數梯度參數優化器參數數據批量所占顯存神經元輸出中間狀態 batchisize和訓練的關系 一、 圖像數據的介紹 圖像數據,相較于結構化數據(表格數據)他的特…

十八、MySQL-DML-數據操作-插入(增加)、更新(修改)、刪除

DML數據操作添加數據更新(修改)數據刪除數據總結代碼: -- DML:數據操作語言-- -- DML:插入數據-insert -- 1.為tb_emp表的username,name,gender 字股插入值insert into tb_emp(username,name,gender,create_time,update_time) values (Toki,小時,2,now()…

Linux 安裝 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解壓配置詳細步驟)?

一、準備工作 ?下載 JDK 安裝包? 去 Oracle 官網或者可信的鏡像站下載: ?jdk-8u291-linux-x64.tar.gz? (這是一個壓縮包,不是安裝程序,解壓就能用) ?jdk-8u291-linux-x64.tar.gz?下載鏈接:https://pa…

藍橋杯----鎖存器、LED、蜂鳴器、繼電器、Motor

(七)、鎖存器1、原理藍橋杯中數據傳入口都是P0,也就是數碼管段選、位選數據、LED亮滅的數據、蜂鳴器啟動或禁用的數據,外設啟動或者關閉都需要通過P0寫入數據,那么如何這樣共用一個端口會造成沖突嘛,答案是肯定的。所以藍橋杯加入…

AI熱點周報(8.3~8.9):OpenAI重返開源,Anthropic放大招,Claude4.1、GPT5相繼發布

名人說:博觀而約取,厚積而薄發。——蘇軾《稼說送張琥》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 目錄一、OpenAI的"開源回歸":時隔5年的戰略大轉彎1. GPT-OSS系列&a…

《Kubernetes部署篇:基于x86_64+aarch64架構CPU+containerd一鍵離線部署容器版K8S1.33.3高可用集群》

總結:整理不易,如果對你有幫助,可否點贊關注一下? 更多詳細內容請參考:企業級K8s集群運維實戰 一、部署背景 由于業務系統的特殊性,我們需要針對不同的客戶環境部署基于containerd容器版 K8S 1.33.3集群&a…

Linux抓包命令tcpdump詳解筆記

文章目錄一、tcpdump 是什么?二、基本語法三、常用參數說明四、抓包示例(通俗易懂)1. 抓所有數據包(默認 eth0)2. 指定接口抓包3. 抓取端口 80 的數據包(即 HTTP 請求)4. 抓取訪問某個 IP 的數據…

抖音、快手、視頻號等多平臺視頻解析下載 + 磁力嗅探下載、視頻加工(提取音頻 / 壓縮等)

跟你們說個安卓上的下載工具,還挺厲害的。它能支持好多種下載方式,具體多少種我沒細數,反正挺全乎的。? 平時用得最多的就是視頻解析,像抖音、快手、B 站上那些視頻,想存下來直接用它就行,連海外視頻的也能…

【iOS】JSONModel源碼學習

JSONModel源碼學習前言JSONModel的使用最基礎的使用轉換屬性名稱自定義錯誤模型嵌套JSONModel的繼承源碼實現initWithDictionaryinit__doesDictionaryimportDictionary優點前言 之前了解過JSONModel的一些使用方法等,但是對于底層實現并不清楚了解,今天…

SmartMediaKit 模塊化音視頻框架實戰指南:場景鏈路 + 能力矩陣全解析

?? 引言:從“內核能力”到“模塊體系”的演進 自 2015 年起,大牛直播SDK(SmartMediaKit)便致力于打造一個可深度嵌入、跨平臺兼容、模塊自由組合的實時音視頻基礎能力框架。經過多輪技術迭代與場景打磨,該 SDK 已覆…