網站首頁 編程語言 正文
redis取hash的值
命令:可以取得對應的hash中的具體值
hmget s_account:208 account accountname
結果:“www”
如圖
命令:取得hash中的所有key
hkeys s_account:208
結果:
redis中存值是Hash沖突如何解決
Redis 中的 Hash和 Java的 HashMap 更加相似,都是數組+鏈表的結構.當發生 hash 碰撞時將會把元素追加到鏈表上
我們先來了解下 hash 的內部結構.第一維是數組,第二維是鏈表.組成一個 hashtable.
在 Java 中 HashMap 擴容是個很耗時的操作,需要去申請新的數組,擴容的成本并不低,因為需要遍歷一個時間復雜度為O(n)的數組,并且為其中的每個enrty進行hash計算。加入到新數組中
為了追求高性能,Redis 采用了漸進式 rehash 策略.這也是 hash 中最重要的部分.
redis在擴容的時候執行 rehash 策略會保留新舊兩個 hashtable 結構,查詢時也會同時查詢兩個 hashtable.Redis會將舊 hashtable 中的內容一點一點的遷移到新的 hashtable 中,當遷移完成時,就會用新的 hashtable 取代之前的.當 hashtable 移除了最后一個元素之后,這個數據結構將會被刪除.
數據搬遷的操作放在 hash 的后續指令中,也就是來自客戶端對 hash 的指令操作.一旦客戶端后續沒有指令操作這個 hash.Redis就會使用定時任務對數據主動搬遷.
正常情況下,當 hashtable 中元素的個數等于數組的長度時,就會開始擴容,擴容的新數組是原數組大小的 2 倍.如果 Redis 正在做 bgsave(持久化) 時,可能不會去擴容,因為要減少內存頁的過多分離(Copy On Write).但是如果 hashtable 已經非常滿了,元素的個數達到了數組長度的 5 倍時,Redis 會強制擴容.
當hashtable 中元素逐漸變少時,Redis 會進行縮容來減少空間占用,并且縮容不會受 bgsave 的影響,縮容條件是元素個數少于數組長度的 10%.
總結
原文鏈接:https://blog.csdn.net/qq_34652478/article/details/85694191
相關推薦
- 2022-09-30 Docker容器搭建本地私有倉庫詳情_docker
- 2022-08-01 Android?WebView軟鍵盤遮擋輸入框方案詳解_Android
- 2022-08-03 Python?解析獲取?URL?參數及使用步驟_python
- 2022-07-30 C#程序終極調試實現windbg的時間旅行_C#教程
- 2022-11-16 Oracle?刪除大量表記錄操作分析總結_oracle
- 2022-07-06 python繪制子圖技巧之plt.subplot、plt.subplots及坐標軸修改_python
- 2022-05-10 關于react中的state整理
- 2022-05-04 詳解Tomcat中查看JVM內存使用情況_Tomcat
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支