日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis-字典(hash)基础

發布時間:2025/3/17 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis-字典(hash)基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis的字典數據結構跟Java的HashMap一樣,也是數組+鏈表結構,數組是hash的位置,hash碰撞的值保存到鏈表種。但是跟HashMap不同的是Redis字典存儲的值都是字符串類型的,而HashMap存儲的值是所有數據類型

常見操作

>hset user name mango (ingeter)1 >hmset user age 18 gender "男"OK >hlen user(ingeter)3>hget user name"mango">hgetall user"name""mango""age""18""gender""男"

當然我們之前說過字典里面的value只能保存string,我們知道字符串類型是可以計數的,字典里面的計數命令是hincrby和incr使用方式一樣。

>hincrby user age 1 (integer)18

在這里我們不禁的想起一個事情,我們在存儲一個對象的時候是使用字符串保存json,還是用字典保存在容器里面呢?這里我們想明白一個事情就是,保存在字符串的數據每次獲取的時候都是獲取所有的字段,有時候我們只想獲取對象的某個字段這里最好是使用字典存儲,因為字典是可以返回某個字段的值,相對于獲取整個對象來說還是相對節約網絡流量的。

那么字典我們知道,當鏈表的數據超過最大的鏈表數或者hash數組滿了的時候,這個字典會進行擴容。那么在Java中HashMap是通過復制一份新的空間然后遍歷整個原表重新存儲到新的表里。

但是在redis不同,如果我們進行復制的話就會占用資源堵塞其他的操作,那么我們Redis字典是如何處理的呢?

在Redis中我們有一種名叫“漸進式”的操作,啥意思?就是我們在rehash的時候會創建一個新的字典,查詢時會同時查詢兩個hash結構,然后在后續的定時任務以及hash操作指令中,循序漸進地將舊hash的內容一點點地遷移到新的hash結構中。當搬遷完成了,就會使用新的 hash 結構取而代之。

值得注意的是:當移除容器最后一個元素時,該數據結構會被刪除,此時內存被回收。

?

?

一名正在搶救的coder

筆名:mangolove

CSDN地址:https://blog.csdn.net/mango_love

GitHub地址:https://github.com/mangoloveYu

?

?

總結

以上是生活随笔為你收集整理的Redis-字典(hash)基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。