redis原始碼分析(五)、redis命令學習總結—雜湊Hash
一、介紹hasp:
大多數程式語言中的map資料結構一樣,Redis是鍵值對的集合,也就是說它存放的是字串和字串之間的對映。由於這個特性,hash特別適用於儲存一個物件。將一個物件儲存在hash中會佔用更少的記憶體,並且可以方便地存取整個物件。
二、命令學習
1、Hset
Redis Hset 命令用於為雜湊表中的欄位賦值 。
如果雜湊表不存在,一個新的雜湊表被建立並進行 HSET 操作。
如果欄位已經存在於雜湊表中,舊值將被覆蓋。
用法:
redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE
返回值:如果欄位是雜湊表中的一個新建欄位,並且值設定成功,返回 1 。 如果雜湊表中域欄位已經存在且舊值已被新值覆蓋,返回 0 。
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HSET website google "www.g.cn" # 設定一個新域
(integer) 1
redis 127.0.0.1:6379>HSET website google "www.google.com" # 覆蓋一箇舊域
(integer) 0
2、Hget
Redis Hget 命令用於返回雜湊表中指定欄位的值。
redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME
返回給定欄位的值。如果給定的欄位或 key 不存在時,返回 nil 。 示例:
redis> HSET site redis redis.com
(integer) 1
redis> HGET site redis
"redis.com"
# 欄位不存在
redis> HGET site1 mysql
(nil)
3、Hdel
Redis Hdel 命令用於刪除雜湊表 key 中的一個或多個指定欄位,不存在的欄位將被忽略。
redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN
返回值: 被成功刪除欄位的數量,不包括被忽略的欄位。
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field1
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field2
(integer) 0
4、Hexists
Hexists 命令用於檢視雜湊表的指定欄位是否存在。
redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME
如果雜湊表含有給定欄位,返回 1 。 如果雜湊表不含有給定欄位,或 key 不存在,返回 0 。
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field1
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field2
(integer) 0
5、Hgetall
Redis Hgetall 命令用於返回雜湊表中,所有的欄位和值。
在返回值裡,緊跟每個欄位名(field name)之後是欄位的值(value),所以返回值的長度是雜湊表大小的兩倍。
用法:
redis 127.0.0.1:6379> HGETALL KEY_NAME
返回值: 以列表形式返回雜湊表的欄位及欄位值。 若 key 不存在,返回空列表。
示例:
redis 127.0.0.1:6379> HSET myhash field1 "Hello"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "World"
(integer) 1
redis 127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
6、Hincrby
Redis Hincrby 命令用於為雜湊表中的欄位值加上指定增量值。
增量也可以為負數,相當於對指定欄位進行減法操作。
如果雜湊表的 key 不存在,一個新的雜湊表被建立並執行 HINCRBY 命令。
如果指定的欄位不存在,那麼在執行命令前,欄位的值被初始化為 0 。
對一個儲存字串值的欄位執行 HINCRBY 命令將造成一個錯誤。
本操作的值被限制在 64 位(bit)有符號數字表示之內。
用法:
redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER
返回值: 執行 HINCRBY 命令之後,雜湊表中欄位的值。
redis 127.0.0.1:6379> HSET myhash field1 20
(integer) 1
redis 127.0.0.1:6379> HINCRBY myhash field 1
(integer) 21
redis 127.0.0.1:6379> HINCRBY myhash field -1
(integer) 20
7、Hincrbyfloat
Redis Hincrbyfloat 命令用於為雜湊表中的欄位值加上指定浮點數增量值。
如果指定的欄位不存在,那麼在執行命令前,欄位的值被初始化為 0 。
用法:
redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER
返回值:執行 Hincrbyfloat 命令之後,雜湊表中欄位的值。 示例:
redis 127.0.0.1:6379> HSET myhash field 20.50
(integer) 1
redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
"20.60"
8、Hkeys
Redis Hkeys 命令用於獲取雜湊表中的所有欄位名。
用法:
redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER
返回值: 包含雜湊表中所有欄位的列表。 當 key 不存在時,返回一個空列表。 示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HKEYS myhash
1) "field1"
2) "field2"
9、Hlen
Redis Hlen 命令用於獲取雜湊表中欄位的數量
用法: 雜湊表中欄位的數量。 當 key 不存在時,返回 0 。
redis 127.0.0.1:6379> HLEN KEY_NAME
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HLEN myhash
(integer) 2
10、Hmget
Redis Hmget 命令用於返回雜湊表中,一個或多個給定欄位的值。
如果指定的欄位不存在於雜湊表,那麼返回一個 nil 值。
用法:
redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN
返回值: 一個包含多個給定欄位關聯值的表,表值的排列順序和指定欄位的請求順序一樣。
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
1) "foo"
2) "bar"
3) (nil)
11、Hmset
Redis Hmset 命令用於同時將多個 field-value (欄位-值)對設定到雜湊表中。
此命令會覆蓋雜湊表中已存在的欄位。
如果雜湊表不存在,會建立一個空雜湊表,並執行 HMSET 操作。
用法:
redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
返回值:執行成功,返回ok
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo" field2 "bar"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HMGET myhash field2
"bar"
12、Hsetnx
Redis Hsetnx 命令用於為雜湊表中不存在的的欄位賦值 。
如果雜湊表不存在,一個新的雜湊表被建立並進行 HSET 操作。
如果欄位已經存在於雜湊表中,操作無效。
如果 key 不存在,一個新雜湊表被建立並執行 HSETNX 命令。
用法:
redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE
返回值: 設定成功,返回 1 。 如果給定欄位已經存在且沒有操作被執行,返回 0 。
示例:
redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
(integer) 0
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
(integer) 1
redis 127.0.0.1:6379> HSETNX nosql key-value-store redis # 操作無效, key-value-store 已存在
(integer) 0
13、Hvals
Redis Hvals 命令返回雜湊表所有欄位的值。
用法:
redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE
返回值: 一個包含雜湊表中所有值的表。 當 key 不存在時,返回一個空表。
示例:
redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HVALS myhash
1) "foo"
2) "bar"
# 空雜湊表/不存在的key
redis 127.0.0.1:6379> EXISTS not_exists
(integer) 0
redis 127.0.0.1:6379> HVALS not_exists
(empty list or set)
相關文章
- Redis命令——雜湊(Hash)Redis
- redis原始碼分析(六)、redis命令學習總結—Redis 集合(Set)Redis原始碼
- redis原始碼分析(四)、redis命令學習總結—連結串列ListRedis原始碼
- redis原始碼分析(三)redis命令學習總結—string字串Redis原始碼字串
- redis原始碼分析(七)、redis命令學習總結—Redis 有序集合(sorted set)Redis原始碼
- Redis(五):hash/hset/hget 命令原始碼解析Redis原始碼
- Redis的雜湊型別(Hash)Redis型別
- Redis五大資料型別之 Hash(雜湊)Redis大資料資料型別
- [Redis 系列]redis 學習四,set 集合,hash 雜湊,zset 有序集合初步認知Redis
- 【Redis 系列】redis 學習四,set 集合,hash 雜湊,zset 有序集合初步認知Redis
- Redis原理再學習04:資料結構-雜湊表hash表(dict字典)Redis資料結構
- redis原始碼分析(二)、sds動態字串學習總結Redis原始碼字串
- redis原始碼分析(9)redis原始碼連結串列學習總結 adlist.h adlist.cRedis原始碼
- HASH雜湊遊戲原始碼丨HASH雜湊遊戲系統開發丨HASH雜湊遊戲開發成品原始碼部署原始碼遊戲開發
- redis之雜湊Redis
- (免費領取紅包封面)【Redis 系列】redis 學習四,set 集合,hash 雜湊,zset 有序集合初步認知Redis
- (免費領取紅包封面)[Redis 系列]redis 學習四,set 集合,hash 雜湊,zset 有序集合初步認知Redis
- redis學習總結Redis
- redis原始碼學習Redis原始碼
- 【資料結構與演算法學習】雜湊表(Hash Table,雜湊表)資料結構演算法
- 【原始碼】Redis exists命令bug分析原始碼Redis
- HASH雜湊值競猜遊戲開發原始碼丨原始碼示例丨HASH雜湊遊戲程式設計遊戲開發原始碼程式設計
- Redis學習總結1Redis
- Hash雜湊遊戲原始碼丨雜湊競猜遊戲系統技術開發丨Hash雜湊遊戲講解遊戲原始碼
- 深入剖析Redis系列(六) - Redis資料結構之雜湊Redis資料結構
- redis命令總結Redis
- 雜湊遊戲原始碼開發搭建丨hash雜湊遊戲競猜原始碼搭建丨雜湊遊戲系統開發遊戲原始碼
- Redis雜湊與有序集合Redis
- redis原始碼分析(五):資料持久化Redis原始碼持久化
- 常用php操作redis命令整理(二)雜湊型別PHPRedis型別
- Redis 雜湊結構記憶體模型剖析Redis記憶體模型
- redis原始碼分析(二)、redis原始碼分析之sds字串Redis原始碼字串
- redis原始碼分析(一)複習redis命令、持久化方案、主從同步原理、配置Redis原始碼持久化主從同步
- Ruby:Hash(雜湊)學習,你可以理解為字典
- Redis系列(九):資料結構Hash(ZipList、HashTable)原始碼解析和HSET、HGET命令Redis資料結構原始碼
- Redis 入門 - 2(雜湊 + 列表)Redis
- redis原始碼分析(一)複習redis命令、持久化方案、主從同步原來、配置Redis原始碼持久化主從同步
- 《閒扯Redis八》Redis字典的雜湊表執行Rehash過程分析Redis