Redis API的理解和使用

2021-10-09 12:41:47 字數 1433 閱讀 6944

2.雜湊hash

3.列表list

4.集合set

5.有序集合zset

以上除了keys的時間複雜度為o(n),其餘時間複雜度都是o(1)。

redis是單執行緒的,同一時間只能執行乙個命令。

那為什麼單執行緒還能這麼快?

純記憶體非阻塞io,使用io多路復用

避免執行緒切換和競態消耗

所以在使用的時候,要避免慢命令,會影響之後的命令執行。

資料結構是對外的,內部編碼是對內的實現。

redis內部使用乙個redisobject物件來表示所有的key和value,redisobject最主要的資訊如上圖所示:type表示乙個value物件具體是何種資料型別,encoding是不同資料型別在redis內部的儲存方式。

所有的key都是字串型別的,value有五種資料型別。

字串型別常用於:快取、計數器、分布式鎖……

字串中也可以存數值,所以可以進行自增(incr)、自減(decr)操作

(1)字串常用命令

(2)底層實現

redis並沒有直接使用c語言的字元陣列,而是使用sds:

struct sdshdr 

;

每乙個key-value的結構如下:field、value可以動態增加、刪除。

(1)常用命令

(2)儲存物件的方式

可以用字串去儲存物件,即將物件序列化成字串之後存入。這樣的缺點在於修改比較麻煩/

用乙個key儲存乙個物件的屬性,這樣太繁瑣。

hash來儲存物件,field即物件的屬性。好處是很直觀,缺點是程式設計稍複雜,且ttl不好控制。

列表是乙個有序、可重複的集合,是基於鍊錶來實現的。

(1)常用命令增

刪 查

改set是乙個無序的、不可重複的集合。

(1)集合內操作api

(2)集合間操作api(1)特點

有序集合中每乙個元素都對應乙個score,有序集合中的元素會按照score排序。

(2)常用命令

Redis API的理解與使用

目錄 一.通用命令 二.資料結構與內部編碼 三.單執行緒架構 redis有五種資料結構,它們是鍵值對中的值,對於鍵來說有一些通用的命令.redis的全域性通用命令有 keys,dbsize,exists key,del key key expire key seconds,type key.1.ke...

的理解和使用

本文出自 在傳統 jsp 中,想要實現頁面布局管理比較麻煩,為了解決在 jsp 中布局的問題,出現了很多開源軟體,比如 apache tiles 和 sitemesh 就是其中比較優秀的。但是使用開源軟體實現布局或多或少會產生一些效能問題,有沒有辦法在不依賴第三方開源軟體的情況下,使用 jsp 本身...

Promise的理解和使用

官方 1 1.promise物件用於非同步計算 1 2.promise表示乙個現在,將來或用不可能可用的值 理解 2 1.主要用於非同步計算 2 2.可以將非同步操作佇列化,按照期望的順序執行,返回符合預期的結果 2 3.可以在物件之間傳遞和操作promise,幫助我們處理佇列 1.同步 不同的事情...