redis資料結構

2021-08-28 13:24:43 字數 874 閱讀 2219

簡介

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命名作為生產者 使...