簡介
redis是kv型nosql,基於鍵值對中的值,提供了5中資料結構:string、list、zset、hash、set,每種資料結構都有多種底層編碼實現,在合適的場景選擇合適的內部編碼
redis全域性命令
命令命名描述
keys *
檢視所有鍵,時間複雜度o(n),會遍歷所有鍵,當儲存了大量key時,線上環境禁止使用,需要耗費非常多時間
dbsize
鍵總數,時間複雜度o(1),不會遍歷所有鍵得到總數,直接訪問內部的鍵總數的變數
exists key
檢查鍵是否存在,存在返回1,不存在返回0
del key [key…]
del是通用命令,無論值是什麼資料型別,都可以將其刪除,返回成功刪除鍵的個數
expire key seconds
對鍵新增過期時間,超過過期時間後會自動刪除鍵
ttl key
返回鍵的剩餘過期時間,-1表示鍵沒設定過期時間,-2鍵不存在
type key
鍵的資料結構型別,鍵不存在,返回none
object encoding key
查詢內部編碼
redis資料結構選擇
對外有5種資料結構,對內每種資料結構有多種編碼實現,這樣有兩個好處:
一是使得外部資料結構和內部編碼實現進行解耦,這樣改進內部編碼的話,對外的資料結構和命令是沒有影響的
二是多種編碼實現可以在不同的場景下發揮各自的優勢,例如ziplist比較節省記憶體,但在列表元素比較多的時候,效能會下降,這時候redis會將列表型別的內部實現轉換成linkedlist。
Redis資料結構
字典 dict 是redis裡最核心的資料結構,正如其全稱remote dictionary service所說,redis其實就是乙個字典服務,字典以key value的形式呈現給使用者,key是簡單的字串,而value可以是各種資料結構,比如字串 string 鍊錶 list 集合 set 排序...
Redis 資料結構
最近接觸到了redis的使用,借這個機會深入的了解一下redis的實現和設計原理。下面先介紹一下redis底層所用到的資料結構。redis的實現幾乎都是基於下面的幾個資料結構之上的。struct sdshdr struct listnode struct list struct dictentry ...
redis 資料結構
今天學習了redis的列表型別 lpush ltrim lrange lpush mylist content ltrim 0,99 lrange 0,1 lrange 兩個引數 分別代表第乙個元素和最後乙個元素 redis的列表型別,可以用來做訊息佇列 使用乙個程序 用lpush命名作為生產者 使...