Redis學習筆記 字典型別

2021-07-04 04:03:53 字數 2455 閱讀 3837

在上篇部落格中在介紹字串型別的時候漏掉了乙個比較重要的內容,在這裡簡單補充下.

getbit key offset

setbit key offset value

bitcount key [start] [end]

bittop operation destkey key [key ... ]

getbit : 獲取字串型別鍵指定位置的二進位制位的值(0或1),如果要獲取的二進位制位的索引位置超過了二進位制位的實際長度,則預設位值為0

setbit : 設定字串型別鍵指定位置的二進位制位的值,如果要設定的二進位制位的索引位置超出了二進位制位的實際長度,setbit命令會自動將中間的二進位制位設定為0.

bitcount : 獲取值是1的二進位制位的個數,也可以通過引數限制統計位元組的範圍

bittop :

雜湊型別的鍵值也是一種字典結構,儲存了字段和字段值的對映,字段值只能是字串型別。乙個雜湊型別的鍵可以之多有232

−1個字段。

注意: redis的所有資料型別都不支援資料型別巢狀。

例如要儲存文章id為0001的部落格,則鍵可以設定為blog:0001,部落格的title,author,content等作為字段。

127.0

.0.1

:6379> hset

blog

:0001

author

gucb

(integer) 1

127.0

.0.1

:6379> hget

blog

:0001

author

"gucb"

127.0

.0.1

:6379> hset

blog

:0001

title "redis

install"

(integer) 1

127.0

.0.1

:6379> hget

blog

:0001

title

"redis

install"

接下來詳細介紹雜湊型別的各命令的使用方法,同樣先通過幫助命令檢視下雜湊型別大體有哪些命令。

127.0.0.1:6379>help @hash
命令原型

時間複雜度

命令描述

返回值hdel key field [field …]

o(n)

時間複雜度中的n為待刪除欄位的數量,如果待刪除的字段不存在則忽略,如果待刪除的鍵不存在,則視為空,返回值為0

實際刪除的字段數

hexists key field

o(1)

判斷指定鍵的指定的字段否存在

如果存在返回1,如果鍵或字段不存返回0

hget key field

o(1)

獲取鍵中指定欄位的關聯值

如果存在返回其關聯值,如果鍵或字段不存在返回nil

hgetall key

o(n)

獲取鍵key中所有欄位的值,n為鍵key中包含的字段的數量

返回欄位-值的列表

hincrby key field increment

o(1)

增加指定key中指定field關聯的value的值。如果key或field不存在,該命令將會建立乙個新key或新field,並將其關聯的value初始化為0,之後再指定數字增加的操作。該命令支援的數字是64位有符號整型,即increment可以負數

返回增加後的值

hincrbyfloat key field increment

o(1)

同上,只是增量值為浮點數

返回增加後的值

hkeys key

o(n)

時間複雜度中的n表示key包含的field數量。返回指定key的所有fields名

返回字段列表

hlen key

o(1)

獲取鍵key包含欄位的數量

返回字段數量

hmget key field [field …]

o(n)

時間複雜度n為要獲取的字段數,返回指定key的field關聯的值,如果key不存在返回一組nil

返回field關聯的值

hmset key field value [field value …]

o(n)

時間複雜度n為要設定的字段數n,依次對鍵key的各個field設定值,如果field已存在則覆蓋原先的值,如果不存在則新建

hscan key cursor [match pattern] [count count]23

4hset key field value23

4hsetnx key field value23

4hvals key23

4

redis學習筆記 redis資料型別

泛指非關係型的資料庫。隨著網際網路web2.0 的興起,傳統的關聯式資料庫在應付web2.0 特別是超大規模和高併發的sns型別的web2.0純動態 已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。nosql資料庫的產生就是為了解決大規模資料集合...

redis學習筆記(7) 壓縮字典zipmap

在hashtable實現中,redis引入了zipmap資料結構,保證在hashtable剛建立以及元素較少時,用更少的記憶體來儲存,同時對查詢的效率也不會受太大的影響。zipmap利用字串實現了簡單的hash表,來儲存少量key value對。zipmap的記憶體布局如下 1 zmlen 1個位元...

Redis學習筆記(三) 字典

redis的字典使用雜湊表作為底層實現,乙個雜湊表中可以有多個雜湊表節點,而每個雜湊節點就儲存在字典中的乙個鍵值對。redis字典所用的雜湊表由disht結構定義。typedef struct dictht table 屬性是乙個陣列,陣列中的每個元素都是乙個指向dictentry結構的指標,每個d...