每天五分鐘,成就Redis大神之數據類型HASH

2020-09-05 程序工具人

今天講redis中的hash數據類型,其實這種類型是Map的集合,相當於key-map。使用的java的同學應該都使用這樣子的數量類型 Map<String,Map<String,Value>>,hash類型就是這種結構。

具體的存儲的數據格式如下:

[key]    [field]  [value]mykey1  name  zhangsan

hash的命令操作和String類型非常像,只不過hash的操作命令都是以h開頭的

下面以一個用戶博客的每天訪問量、粉絲數、關注量為例

設置和獲取值

Hset [key] [field] [value]:設置值

Hget [key] [field] :獲取值

Hmset [key] [field] [value] [field2] [value2] :批量設置值

Hmget [key] [field1] [field2] :批量獲取值

Hgetall [key] :獲取所有屬性

本機:0>hset user1 view 1  34;1&34;1&獲取用戶的訪問量&34;本機:0>hget user1 fans&34;本機:0>hmset user1 view 10 fans 15  34;OK&批量獲取用信息 1)  &34; 2)  &34;本機:0>hgetall user1  34;view&34;10&34;fans&34;15&34;view&34;10&34;fans&34;15&刪除user1中的訪問量view屬性值&34;本機:0>hgetall user1 1)  &34; 2)  &34;

獲取長度

Hlen [key]:獲取hash中屬性數量

本機:0>hgetall user1 1)  &34; 2)  &34; 3)  &34; 4)  &34;本機:0>hlen user1  34;2&34;fans&34;15&34;wiew&34;13&34;1&34;0&34;fans&34;wiew&34;15&34;13&34;user1&34;fans&34;22&34;wiew&34;13&設置user1的粉絲數增加6個&34;本機:0>hsetnx user1 test1 hello  34;1&34;fans&34;28&34;wiew&34;13&34;test1&34;hello&34;0"

總結

Hash類型數據適合存儲對象,例如用戶的信息,用上面的例子。相比較而言,將一個對象類型存儲在Hash類型裡要比存儲在String類型類,佔用更小的內存空間,並方便存取整個對象。用戶表user,id為1的粉絲數為1000個,則可以這樣子設計,user:1 fans 1000

即hset user:1 fans 1000

------------------------------------------------END-----------------------------------------------------------------

你的一個讚一個關注是我創作的動力,是我持續輸出的能量源泉,老鐵關注一波吧!

相關焦點

  • 每天五分鐘,成就redis大神之Zset數據類型
    Zset類型有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數(score)卻可以重複。
  • redis數據類型使用場景_redis 五種數據類型的使用場景 - CSDN
    Redis 數據類型五種類型與類比java的模型string --> Stringhash --> Hashmaplist --> LinkListset --
  • Redis系列之數據類型
    上節我們介紹Redis的安裝和部署,這節我們就來正式步入學習Redis的過程,今天我們主要講講Redis中支持的數據類型。Redis支持數據類型有以下5種:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),下面我們將一一介紹。
  • Redis存JSON數據時選擇string還是hash
    我們在緩存json數據到redis時經常會面臨是選擇string類型還是選擇hash類型去存儲。接下來我從佔用空間和IO兩方面來分析這兩種類型的優勢。如下圖就是ziplist的存儲的格式那我們接下來分別分析redis的string和hash類型佔用空間方面的知識string類型: string類型當然如其名,如果json數據以string類型去存儲,那麼它的空間佔用方面肯定是相當的。hash類型: redis對hash類型是有兩種編碼方式,分別是ziplist和hashtable。
  • Redis數據類型及場景應用
    一、 redis 特點所有數據存儲在內存中,高速讀寫提供豐富多樣的數據類型:string、 hash、 set、 sorted set、bitmap、hyperloglog提供了 AOF 和 RDB 兩種數據的持久化保存方式,保證了 Redis 重啟後數據不丟失Redis 的所有操作都是原子性的,還支持對幾個操作合併後的原子性操作,支持事務通常我們都把數據存到關係型資料庫中
  • 一文搞定Redis五大數據類型及使用場景
    作者 | 周明堯頭圖 | CSDN 下載自東方ICRedis 是一種基於鍵值對的NoSQL資料庫,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五種基本數據結構構成,除此之外還支持一些其他的數據結構和算法。key都是由字符串構成的,那麼這五種數據結構的使用場景有哪些?一起來看看!
  • 詳解Redis五種數據結構的底層原理
    1,redis有五種基本數據結構:string、hash、set、zset、list;底層redis是通過c語言來實現這w五種結構的,具體是如何實現的,我們具體看一下。2,SDS "simple dynamic string",redis中所有場景中出現的字符串,基本都是由SDS來實現的。
  • Redis詳解:sets數據類型及操作
    系列文章:  Redis詳解:strings數據類型及操作  Redis詳解:hashes數據類型及操作  Redis詳解:lists數據類型及操作  Redis的set是string類型的無序集合。set元素最大可以包含(2的32次方)個元素。
  • redis五種數據類型及使用場景
    它支持的數據類型很豐富,如字符串、鍊表、集 合、以及散列等,並且還支持多種排序功能。二、Redis的數據類型 Redis 是一種高級的 key-value 的存儲系統,其中key值是二進位安全的,這意味著可以用任何二進位序列作為key值,從形如」foo」的簡單字符串到一個JPEG文件的內容都可以。空字符串也是有效key值。
  • redis數據類型及api操作,建議收藏
    1.stringstring是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。string類型是二進位安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
  • Redis migrate 數據遷移工具
    /redis-tool-linux-amd64 -h支持的數據類型string 字符串hash 散列列表list 列表sorted-set 有序集合/redis-tool-darwin-amd64 migrate -h數據遷移命令Usage:redis-tool migrate [command]Examples:支持命令:[hash, set, sorted-set, list]Available Commands:all    
  • 分享redis中除5種基礎數據類型以外的高級數據類型
    眾所周知,在redis中的數據類型有String(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)五種。但在這5種之外還有高級數據類型。今天和大家介紹下常用的高級數據類型:1、HyperLogLog。
  • 異構數據源導redis不用找了!rediswriter已上菜
    經過一周時間的開發和測試,本插件支持各種異構數據源MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase…導入redis。考慮到性能,本插件做了pipline批量寫redis。
  • 圖解redis五種數據結構底層實現(動圖哦)
    redis有五種基本數據結構:字符串、hash、set、zset、list。但是你知道構成這五種結構的底層數據結構是怎樣的嗎? 今天我們來花費五分鐘的時間了解一下。 (目前redis版本為3.0.6)動態字符串SDSSDS是"simple dynamic string"的縮寫。
  • Redis的五大數據類型?如何使用?(內含完整測試源碼)
    五種數據結構:字符串(String),Hash(字典),列表(List),集合(Set),有序集合(Sorted Set)。Redis大部分時間用來做緩存,因為速度快(內存資料庫,單線程,單進程,Redis 6.0支持多線程,後面我們會詳細講Redis 6.0的新特性 )。
  • Redis數據類型知識分享
    字符串類型是redis最基礎的數據結構,首先鍵是字符串類型,而且其他幾種結構都是在字符串類型基礎上構建的,2. 所以字符串類型能為其他四種數據結構的學習尊定基礎。3. 字符串類型實際上可以是字符串4. (簡單的字符串、複雜的字符串(xml、json)、數字(整數、浮點數)、二進位(圖片、音頻、視頻)),5. 但最大不能超過512M。
  • Redis客戶端:Redis Desktop Client
    Redis Desktop Client for Mac是一款Redis客戶端管理軟體,redis desktop client mac版支持hash、set、string、list等多種數據類型,你可以輕鬆新增和修改key-value、修改key有效時間、查看redis的詳細信息等,這是一款不錯的redis可視化客戶端,歡迎各位來體驗哦!
  • ziplist vs 普通數組,redis hash 實現
    @[TOC](ziplist vs 普通數組以及redis hash 在ziplist的實現) zipList 特點1. 需要連續的內存地址。同時也需要預分配地址。2. 可以存不定長的數據,但是有長度限制。3. 從數組尾巴插入,不會造成數組移位的情況。4.
  • 緩存神器Redis的五種數據類型及使用
    今天先來說一說redis作為緩存使用,提供了5 種基礎數據結構,分別為:string (字符串)、list (列表)、set (集合)、hash (哈 希) 和 zset (有序集合)。Redis 所有的數據結構都是以唯一的 key 字符串作為名稱,然後通過這個唯一key值來獲取相應的 value 數據。不同類型的數據結構的差異就在於value 的結構不一樣。字符串結構使用非常廣泛,一個常見的用途就是緩存用戶信息。我們將用戶信息結構體 使用 JSON 序列化成字符串,然後將序列化後的字符串塞進 Redis 來緩存。同樣,取用戶 信息會經過一次反序列化的過程。
  • redis—底層數據結構詳解
    type:表示值的數據類型。當長度小於20,並且是數值類型時,其底層就是用long來進行數據存儲;這樣做的好處就是可以減少空間佔用,使用long的話最多也就佔8個字節,使用char類型的話,會佔用更多的內存空間。當存儲是字符串的數據時,並且字符串的長度小於等於44位元組時,以及長度大於22時,RedisObject和SDS會被分配到同一塊內存空間,這樣可以避免內存碎片化的問題,這種方式稱為embstr編碼方式。