Redis 五種數據類型(Hash)


Redis 五種數據類型(Hash)

簡介:

  Redis Hash 是一個String類型的 field 和 value的映射表,hash 特別適合用於存儲對象。Redis中每個 hash 可以存儲 2的32次方減一個鍵值對(40多億),可以看成具有KEY和VALUE的map容器,該類型非常適合於存儲對象的信息;如:unames,upass、age等。該類型的數據僅占用很少的磁盤空間(相比JSON);


Redis hash命令

序號 命令及描述
1 HDEL key field1 field2] 刪除一個或多個哈希表字段
2 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
3 HGET key field 獲取存儲在哈希表中指定字段的值。
4 HGETALL key 獲取在哈希表中指定 key 的所有字段和值
5 HINCRBY key field increment 為哈希表 key 中的指定字段的整數值加上增量 increment 。
6 HINCRBYFLOAT key field increment 為哈希表 key 中的指定字段的浮點數值加上增量 increment 。
7 HKEYS key 獲取所有哈希表中的字段
8 HLEN key 獲取哈希表中字段的數量
9 [HMGET key field1 field2] 獲取所有給定字段的值
10 [HMSET key field1 value1 field2 value2 ] 同時將多個 field-value (域-值)對設置到哈希表 key 中。
11 HSET key field value 將哈希表 key 中的字段 field 的值設為 value 。
12 HSETNX key field value 只有在字段 field 不存在時,設置哈希表字段的值。
13 HVALS key 獲取哈希表中所有值
14 HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對。

應用場景:

Hash的應用場景:(存儲一個用戶信息對象數據)

  1. 常用於存儲一個對象;

  2. 為什么不用String存儲一個對象呢?

    Hash 是最接近關系型數據結構的數據類型,可以將數據庫一條記錄或程序中一個對象轉換成 hashMap 存放在redis中;

    用戶ID為查找的key,存儲的value用戶對象包含姓名,年齡,生日等信息,如果用普通的key / value結構來存儲,主要有以下2中存儲方式:

    1. 第一種方式將用戶ID作為查找key,把其他信息封裝成一個對象以序列化的方式存儲,這種方式的缺點是,增加了序列化 / 反序列化的開銷,並且在需要修改其中一項信息時,需要把整個對象取回,並且修改操作需要對並發進行保護,引入CAS等復雜問題;

    2. 第二種方式是這個用戶信息對象有多少成員就存多少個key-value對,用戶ID對應屬性的名稱作為唯一標識來取得屬性的值,雖然省去了序列化開銷和並發問題,但是用戶ID為重復存儲,如果存在大量這樣的數據,內存浪費還是非常可怕的;

    總結:

    Redis 提供的Hash很好的解決了這個問題,Redis的Hash實際是內部存儲的Value為一個HashMap,並提供直接存取這個Map的接口;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM