Redis初識第四期----Hash的命令和應用場景

首先為了區分Redis的鍵值對存儲的key-value,Hash中的鍵值對稱為field-value。

命令

1.Hset

Hset key?field value [field value]

返回值為設置成功的field-value的個數。

2.Hget

Hget key field?

返回為value

3.Hexists

Hexists key field

判斷是否存在:返回1表示存在,0表示不存在。

4.Hdel

Hdel key field [field....]

刪除Hash中指定的字段,返回類型為刪除的字段個數。

注意區分Hdel和del:

Hdel是刪除的field,而del則是將整個Key都刪除。

5.Heys

Hkeys key

獲取Hash中所有的字段,是一個比較危險的操作,類似于Keys*,可能會引起服務器阻塞。

6.Hvals

Hvals key

獲取Hash中所有的values。(也可能有危險,尤其是values特別多時)

7.Hgetall

Hgetall key

獲取Hash中所有的field 和 values(危險操作)

8.HMget

類似于Mget,可以一次查詢多個field 。

語法:HMget key f1,f2....

其次Hash中也有HMset,但是由于Hset已經可以一次設置多個了,所以HMset也沒什么必要了。

上述操作中的Hkeys,Hgetall,Hvals都是具有一定風險的操作,當元素過多時,可能會阻塞服務器,為了避免這種情況,我們可以使用“漸進式”遍歷式操作“scan”,將這些操作“化整為零“。scan操作會在之后文章中介紹。

9.Hlen

Hlen? key

獲取Hash中所有字段的個數。注意時間復雜度為O(1)級別(不用遍歷)

10.Hset? NX

HSETNX key field value

當字段不存在時才能設置成功。

11.HIncrby

對value可以加減整數。

12.HIncrbyFloat

對valuue加減小數。

這兩個操作在操作時,是先將value轉為對應的格式(int,double),處理好后再轉為String格式存進去。

Hash內部編碼

1.ziplist

采用一定的算法對數據進行壓縮操作,讓空間更加緊湊,節省內存空間,代價就是進行讀寫的速度會比較慢,適合于元素個數較少,元素長度較短的情況。

2.HashTable

當元素不適用于ziplist時,就會轉化為HashTable。具體什么時候開始轉化,可以在Redis中的配置文件中來手動配置。

Hash使用場景

主要是通過hash來存Mysql中的表

比如說,可以將key設置為user1,field為name,value為20,這樣就將user的name屬性存好了,也可以設置多個hash,分別存Id,age等。

其次String類型也可以通過設置為Json類型來存數據庫中的數據,但是如果修改的話就不如Hash方便,因為需要將整個Json都取出來再修改。而Hash可以直接通過修改對應field的value來修改。

但是Hash也有缺點,尤其當內部編碼為HashTable時,空間浪費現象比較嚴重。主要原因為以下幾點:

  • 指針開銷:HashTable 中的每個鍵值對都需要額外的指針來鏈接
  • 內存對齊:HashTable 中的節點需要按照一定的字節邊界對齊,導致內存碎片
  • 哈希表結構開銷:HashTable 需要維護哈希桶、鏈表等結構
  • 空間預分配:為了避免頻繁擴容,Redis 會預分配更多的空間

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

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

相關文章

【大數據技術棧】數據管理范疇常用大數據技術棧

一、技術棧分層架構 大數據技術棧通常分為四個核心層級: 數據采集層 負責多源異構數據的實時/批量采集 日志采集: F l u m e Flume Flume、 L o g s t a s h Logstash Logstash消息隊列: K a f k a Kafka Kafka、 R a b b i t M Q RabbitMQ …

安全左移(Shift Left Security):軟件安全的演進之路

文章目錄 一、背景:傳統安全的尷尬處境二、安全左移:讓安全成為開發的“第一等公民”三、安全左移的關鍵實施階段1. 需求階段:嵌入安全需求建模2. 設計階段:威脅建模與架構審計3. 編碼階段:安全編碼規范與靜態分析4. 構…

固定債可以賣call嗎

我們都知道如果持有tlt,可以賣call來賺取時間價值,如果我買固定到期的美債而不是etf,有類似的操作嗎,我可以賣call嗎 以下是關于直接持有固定到期美債并嘗試賣出看漲期權的詳細分析: 一、直接持有美債與ETF&#xff08…

fish安裝node.js環境

為什么強調fish shell,因為fish shell的緣故,不能直接執行node.js官網的命令 好的,您遇到了一個非常典型且重要的問題。請仔細閱讀我的分析,這能幫您徹底解決問題。 問題診斷 您看到的所有錯誤,歸根結底有兩個核心原…

記一次Ubuntu22安裝MongoDB8并同步本地數據過程

1. 效果展示 2. 安裝MongoDB 8 根據官方文檔https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/一頓操作即可 2.1 配置微調支持遠程訪問 修改配置文件,默認/etc/mongod.conf # network interfaces net:port: 27017bindIp: 0.0.0.02.2 新增adm…

HarmonyOS應用開發高級認證知識點梳理 (三)狀態管理V2裝飾器核心規則

以下是針對HarmonyOS應用開發高級認證備考的?狀態管理V2裝飾器核心規則?知識點系統梳理: 一、核心裝飾器分類與功能 1. ?組件聲明裝飾器? ComponentV2? (1)基礎定義與限制 功能定位? 用于裝飾自定義組件,啟用V2狀態管理能力,需配…

SAP資產記賬相關業務成本中心為空的問題

用戶在資產記賬時,發現字段“成本中心”是空且為灰色的,并沒有顯示資產對應的成本中心,如下圖所示: 首先,關于資產購置記賬的相關業務,成本中心要不要顯示?其實是可以不顯示的,它是來…

智源大會AI安全論壇:深挖風險紅線,探討應對措施

6月7日,在與安遠AI聯合主辦的智源大會“AI安全論壇”上,來自MIT、清華、復旦、人大、智源、多倫多大學、新加坡管理大學、Redwood Research、瑞萊智慧和安遠AI 的學者與技術專家同臺,以“AI安全”為核心議題,從主旨報告&#xff0…

電機控制的一些筆記

1. 電角度和機械角度 電角度 機械角度 * 磁極對數 機械角度就是實際的空間幾何角度,范圍是0-360 https://blog.csdn.net/leekay123/article/details/108655482 https://www.bilibili.com/video/BV11Q4y1Y7kR/?spm_id_from333.788.recommend_more_video.1&vd…

c#手動編譯

一、配置環境變量 點擊環境變量,在用戶變量的path進行新建,點擊編輯 點擊新建 點擊新建 添加文件目錄 這是我的可能不一樣,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 輸入 點擊確定,就可以了 二、建立cs文件 代碼實例…

pcap流量包分析工具設計

在復雜的網絡世界中,數據包是信息的載體,但也可能成為風險的源頭。無論是開發者調試接口,還是安全人員排查異常,都需要一個能夠看透數據本質的“眼睛”。然而,專業的網絡分析工具往往過于復雜,不適合快速定…

Qt 安裝與項目創建

一、Qt 介紹 1. Qt是什么? Qt是一個跨平臺的 C 開發庫,主要用來開發圖形用戶界面(Graphical User Interface,GUI)程序,當然也可以開發不帶界面的命令行(Command User Interface,CU…

基于注意力機制的方法預測的體重

我們有一些已知的身高(作為鍵 K K K)和對應的體重(作為值 V V V)。現在,我們想使用一種基于注意力機制的方法來“查詢”一個特定身高(比如 170cm)對應的體重。雖然這通常不是注意力機制的典型…

Modbus TCP 進階:基于以太網的遠程設備控制(一)

Modbus TCP 基礎回顧 ** 在工業自動化領域,Modbus TCP 是一種廣泛應用的通信協議,它基于以太網,為設備之間的通信搭建了橋梁,實現了遠程設備的高效控制。Modbus TCP 是 Modbus 協議家族中的一員,它在傳統 Modbus 協議…

linux魔術字定位踩內存總結

0,數據被改寫時我們需要怎么定位,我們首先需要確認數據是邏輯上被改寫還是踩內存被改寫的。 1,當數據被踩時,也就是出現數據異常時,并且可以穩定復現時,我們確認時踩固定內存時,我們可以使用魔術字定位問題。 代碼舉例查看確認。 #include <stdio.h> #include…

淺談Docker Kicks in的應用

正因為傳統部署的麻煩&#xff0c;我們希望減少整個安裝過程&#xff0c;將其簡單化&#xff0c;以下介紹兩個思路&#xff1a; 思路一&#xff1a;安裝 Docker 后安裝 Ghost&#xff0c;并且直接暴露 80 端口&#xff0c;此時所有請求由 Docker 內的 Express 服務器處理&…

【Rust + Actix Web】現代后端開發:從零構建高并發 Web 應用

目錄 項目概述環境準備項目創建與依賴配置系統架構設計核心代碼實現1. 數據庫模型 (src/models.rs)2. 應用狀態管理 (src/state.rs)3. 核心業務邏輯 (src/handlers.rs)4. 主應用入口 (src/main.rs) 高并發優化策略1. 異步處理模型2. 連接池配置優化3. 緩存策略設計 性能測試結果…

2025java面試題整理通俗易懂好記

一、Java 基礎 1. JVM 相關 Q&#xff1a;什么情況下會發生棧內存溢出&#xff1f; A&#xff1a;就像食堂打飯窗口前排隊&#xff0c;隊伍太長&#xff08;方法調用層級太深&#xff09;&#xff0c;或者每個人占的位置太大&#xff08;局部變量太多&#xff09;&#xff0c;…

內存分配算法(系統分配算法~應用常見算法)

一、內存碎片 內部碎片與外部碎片 內部碎片&#xff1a;指已分配給進程但未被實際利用的內存空間&#xff0c;屬于??已分配內存內部的浪費??。 外部碎片&#xff1a;內存中??零散分布的空閑小空間??&#xff0c;總量足夠但無法合并為大塊以滿足連續內存請求。 內部碎…

緩解停車難的城市密碼:4G地磁檢測器如何重構車位資源分配

城市停車難&#xff0c;是困擾車主和管理者的雙重痛點。尋找車位耗時耗力&#xff0c;人工計時收費易生糾紛&#xff0c;傳統管理模式效率低下。而 4G地磁檢測器 的出現&#xff0c;正悄然改變這一局面。它如同埋入城市道路的“感知神經元”&#xff0c;通過4G地磁檢測器 的精準…