14 Redis編碼優化

2021-09-27 07:41:11 字數 1405 閱讀 5630

二、redis物件和編碼

三、其他

四、小結

五、參考

typedef struct redisobject robj;
字段

含義相關命令

type

物件型別

type keyname

encoding

物件編碼

object encoding keyname

refcount

物件引用計數

object refcount keyname

lru物件最後訪問時間

object idletime keyname

object encoding keyname

127.0.0.1:6379> object encoding name

"embstr"

基礎型別

編碼型別

object encoding命令輸出

轉換條件

string

整數 sds embstr

int/embstr/raw

滿足整數則使用整數,否則使用embstr(長度小於39,分配和釋放次數減少)/sds raw(大於39)

list

ziplist 雙向鍊錶

ziplist/linkedlist

字串元素小與64並且元素小與512個使用ziplist

hash

ziplist 字典

ziplist/hashtable

所有鍵值長度小於64且鍵值對少於512使用ziplist

set整數集合 字典

intset/hashtable

全為整數且不超過512個則使用整數集合,反之使用字典(value為null)

zset

ziplist 跳表

ziplist/skiplist

集合元素長度均小於64且元素少於128時使用ziplist,反之使用跳表

list-max-ziplist-value

list-max-ziplist-entries

hash-max-ziplist-value

hash-max-ziplist-entries

set-max-intset-entries
zset-max-ziplist-value

zset-max-ziplist-entries

Redis學習 (14)Redis 事務

redis 事務可以一次執行多個命令,並且帶有以下兩個重要的保證 乙個事務從開始到執行會經歷以下三個階段 以下是乙個事務的例子,它先以multi開始乙個事務,然後將多個命令入隊到事務中,最後由exec命令觸發事務,一併執行事務中的所有命令 redis 127.0.0.1 6379 multi okr...

14 Redis 分布式鎖

有這樣乙個情境,執行緒a和執行緒b都共享某個變數x 分布式鎖可以基於很多種方式實現,比如zookeeper redis 不管哪種方式,他的基本原理是不變的 用乙個狀態值表示鎖,對鎖的占用和釋放通過狀態值來標識 redis為單程序單執行緒模式,採用佇列模式將併發訪問變成序列訪問,且多客戶端對redis...

14 Redis如何處理客戶端連線

redis通過在tcp埠上進行監聽,或者unix socket 如果啟用 的方式來接受客戶端的連線。當乙個新的客戶端連線被接受執行以下操作 如果它因為當前已經接受了最大數量的客戶端,無法接受當前的客戶端,redis將嘗試傳送乙個錯誤給客戶端以便讓其意識到這種情況,並且立即關閉連線。即使連線被redi...