Redis 五個基本資料型別

2021-09-24 15:48:08 字數 3012 閱讀 9209

1.string型別(字串型別)

string 是redis中最基本的型別。redis中的string 型別是二進位制安全的,也就是說在redis中string型別可以包含各種資料,比如一張jpeg或者是乙個序列化的ruby物件。乙個string型別的值最大長度可以是512m。

在redis中string有很多有趣的用法,比如:

把string當做乙個隨機訪問的向量(vector),這可以使用getrange和 setrange命令來實現

檢視string型別可用命令來獲得更多資訊,或者閱讀redis資料型別介紹一章。

2.lists型別(列表型別)

redis的列表型別中儲存一系列string值,這些string按照插入的順序排序。redis的list可以從頭部(左側)加入元素,也可以從尾部(右側)加入元素。

lpush 命令是在頭部加入乙個新元素,rpush 命令是在尾部加入乙個新元素。當在乙個空的鍵值(key)上執行這些操作時會建立乙個新的列表。類似的,當乙個操作清空了乙個list時,這個list對應的key會被刪除。這非常好理解,因為從命令的名字就可以看出這個命令是做什麼操作的。如果使用乙個不存在的key呼叫的話就會使用乙個空的list。

一些例子:

1lpush mylist a   # 現在list是 "a"

2lpush mylist b   # 現在list是"b","a"

3rpush mylist c   # 現在list是 "b","a","c" (注意這次使用的是 rpush)

list的最大長度是2^32 – 1個元素(4294967295,乙個list中可以有多達40多億個元素)

從時間複雜度的角度來看,redis list型別的最大特性是:即使是在list的頭端或者尾端做百萬次的插入和刪除操作,也能保持穩定的很少的時間消耗。在list的兩端訪問元素是非常快的,但是如果要訪問乙個很大的list中的中間部分的元素就會比較慢了,時間複雜度是o(n)。

redis的lists型別有很多有趣的用法,比如:

請檢視lists型別可用命令來獲得更多的資訊,或者閱讀redis資料型別介紹一章

3.sets型別(集合型別)

redis的sets型別是string的無序集合。增加,刪除,測試元素是否存在的時間複雜度都是o(1)(不管集合中有多少元素都是穩定的時間消耗)

redis sets的乙個重要特性是不允許重複元素。向集合中新增多次相同的元素,集合中只存在乙個該元素。在實際應用中,這意味著在新增乙個元素前不需要先檢查元素是否存在。

關於redis sets乙個非常有意思的事情是,它們支援多個伺服器端命令來從現有集合開始計算集合,所以執行集合的交集,並集,差集都可以很快。

set的最大長度是2^32 – 1個元素(4294967295,乙個set中可以有多達40多億個元素)

redis sets有很多有趣的用法,比如:

檢視set可用命令獲得更多資訊,或者閱讀redis資料型別介紹一章

4.hashes雜湊型別

redis hashes 儲存string域和string值之間的對映,所以它們是用來表示物件的絕佳資料型別(比如乙個有著使用者名稱,密碼等屬性的user物件):

1@cli

2hmset user:1000 username antirez password p1pp0 age 34

3hgetall user:1000

4hset user:1000 password 12345

5hgetall user:1000

乙個有著少量資料域(這裡的少量大概100上下)的hash,其儲存方式占用很小的空間,所以在乙個小的redis例項中就可以儲存上百萬的這種物件。

雖然hashes主要用於表示物件,他們可以儲存很多的元素,所以你可以使用hashes來做許多其他的工作。

hash的最大長度是2^32 – 1個域值對(4294967295,乙個hash中可以有多達40多億個域值對)

檢視hash型別可用命令來獲得更多資訊,或者閱讀redis資料型別介紹一章

5.sorted sets型別(有序集合型別)

redis有序集合型別與redis的集合型別類似,是非重複的string元素的集合。不同之處在於,有序集合中的每個成員都關聯乙個score,score是在排序時候使用的,按照score的值從小到大進行排序。集合中每個元素是唯一的,但score有可能重複。

使用有序集合可以很高效的進行,新增,移除,更新元素的操作(時間消耗與元素個數的對數成比例)。由於元素在集合中的位置是有序的,使用get ranges by score或者by rank(位置)來順序獲取或者隨機讀取效率都很高。(本句不確定,未完全理解原文意思,是根據自己對redis的淺顯理解進行的翻譯)訪問有序集合中間部分的元素也非常快,所以可以把有序集合當做乙個不允許重複元素的智慧型列表,你可以快速訪問需要的一切:獲取有序元素,快速存在測試,快速訪問中間的元素等等。

簡短來說,使用有序集合可以實現很多高效能的工作,這一點在其他資料庫是很難實現的。

使用有序集合你可以:

有序集合可能是redis中最高端的資料型別了,所以請花一些時間檢視一下 有序集合命令列表 來獲得更多資訊,同時你可能也想閱讀redis資料型別介紹

bitmaps and hyperloglogs型別(位圖型別和hyperloglogs型別)

Redis五種基本資料型別

1 常用命令 set key value ex px setex aa 10 test getmset 批量設定 mget incr key decr incrby key increment 增多少 decrby incrbyfloat 浮點數增加 2 內部編碼 int 8個位元組的長整型 emb...

redis五種基本資料型別

對redis來說,所有的key 鍵 都是字串。是redis中最基本的資料型別,乙個key對應乙個value。string型別是二進位制安全的,意思是 redis 的 string 可以包含任何資料。如數字,字串,jpg或者序列化的物件。使用 get set del incr decr 等 127.0...

redis五種基本資料型別

redis中所有的key的型別都是字串 常用操作 新增乙個key set key1 value1 新增乙個key,並設定自動過期時間 set name1 jack1 ex 3 批量設定多個key mset key1 value1 key2 value2 獲取乙個key的值 get key1 獲取ke...