redis的5種資料型別

2021-09-01 05:51:17 字數 2700 閱讀 1695

【redis資料結構】

redis是一種高階的key-value的儲存系統,其中value支援五種資料型別。

1.字串(string)

2.雜湊(hash)

3.字串列表(list)

4.字串集合(set)

5.有序字串集合(sorted set)

key的定義呢,需要大家注意的幾點:

key永遠都是字串。

key不要太長,最好不要操作1024個位元組,這不僅會消耗記憶體還會降低查詢效率

key不要太短,如果太短會降低key的可讀性 

在專案中,key最好有乙個統一的命名規範

【string型別】

字串型別是redis中最為基礎的資料儲存型別,它在redis中是二進位制安全的,這便意味著該型別存入和獲取的資料相同。在redis中

字串型別的value最多可以容納的資料長 度是512m。

【賦值】set key value:設定key持有指定的字串value,如果該key存在則進行覆蓋操作。總是返回」ok」

【取值】get key:獲取key的value。如果與該key關聯的value不是string型別,redis將返回錯誤資訊,因為get命令只能用於獲取string value;如果該key不存在,返回(nil)。

【刪除】del key :刪除指定key

【hash型別】非常適合於儲存值物件的資訊

redis中的hash型別可以看成具有string key和string value的map容器。所以該型別非常適合於儲存值物件的資訊。如username、password和age等。

如果hash中包含很少的字段,那麼該型別的資料也將僅占用很少的磁碟空間。每乙個hash可以儲存4294967295個(就是int的最大值,4開頭的十位數)鍵值對

【賦值】 hset key field value:為指定的key設定field/value對(鍵值對)。

hmset key field value [field2 value2 …]:設定key中的多個filed/value

【取值】hget key field:返回指定的key中的field的值

hmget key fileds:獲取key中的多個filed的值

hgetall key:獲取key中的所有filed-vaule

【刪除】hdel key field [field … ] :可以刪除乙個或多個字段,返回值是被刪除的字段個數

【list型別】list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部(left)和尾部(right)新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵創

建乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包含的最大元素數量是4294967295(42億)。

插入和刪除的需求很多,而查詢的需求很少,這個時候可以考慮鍊錶結構,因為鍊錶結構查詢不是特別快。

【兩端新增】lpush key values[value1 value2…]:在指定的key所關聯的list的頭部插入所有的values,如果該key不存在,該命令在插入的之前建立

乙個與該key關聯的空鍊錶,之後再向該鍊錶的頭部插入資料。插入成功,返回元素的個數。

rpush key values[value1、value2…]:在該list的尾部新增元素。

【檢視列表】lrange key start end:獲取鍊錶中從start到end的元素的值,start、end從0開始計數;也可為負數,若為-1則表示鍊錶尾部的元素,-2則表示倒數第二個,依次類推… 

【兩端彈出】lpop key:返回並彈出指定的key關聯的鍊錶中的第乙個元素,即頭部元素。如果該key不存在,返回nil;若key存在,則返回鍊錶的頭部元素。

rpop key:從尾部彈出元素。

【set型別】在redis中,我們可以將set型別看作為沒有排序的字元集合,和list型別一樣,我們也可以在該型別的資料值上執行新增、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作

的時間複雜度為o(1),即常量時間內完成次操作。set可包含的最大元素數量是4294967295。和list型別不同的是,set集合中不允許出現重複的元素,這一點和c++標準庫中的set容器是完

全相同的。換句話說,如果多次新增相同元素,set中將僅保留該元素的乙份拷貝。和list型別相比,set型別在功能上還存在著乙個非常重要的特性,即在伺服器端完成多個sets之間的聚合計

算操作,如unions、intersections和differences。

【新增/刪除元素】sadd key values[value1、value2…]:向set中新增資料,如果該key的值已有則不會重複新增

srem key members[member1、member2…]:刪除set中指定的成員

【獲得集合中的元素】smembers key:獲取set中所有的成員

sismember key member:判斷引數中指定的成員是否在該set中,1表示存在,0表示不存在或者該key本身就不存在。(無論集合中有多少元素都可以極速的返回結果)

【sortedset】sorted-set和set型別極為相似,它們都是字串的集合,都不允許重複的成員出現在乙個set中。它們之間的主要差別是sorted-set中的每乙個成員都會有乙個分數(score)與之關聯,redis正

是通過分數來為集合中的成員進行從小到大的排序。然而需要額外指出的是,儘管sorted-set中的成員必須是唯一的,但是分數(score)卻是可以重複的。

Redis的5種資料型別

redis支援5種資料型別,它們描述如下 redis的字串是位元組序列。在redis中字串是二進位制安全的,這意味著他們有乙個已知的長度,是沒有任何特殊字元終止決定的,所以可以儲存任何東西,最大長度可達512兆。例子redis 127.0 0.1 6379 set name yiibai okred...

Redis的5種資料型別

redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。string型別是二進位制安全的。意思是red...

Redis 五種資料型別

一 前言 上篇部落格已經對redis的一些基本知識做了一些簡介,這篇部落格,將簡單介紹一些redis的五種資料型別。分別為string 字串 hash 雜湊 list 鍊錶 set 集合 zset 有序集合 對這些型別可以執行很多原子性的操作 比如向乙個string型別的value後面追加字串 向l...