redis常用知識點之基礎資料型別

2021-09-12 16:51:08 字數 2787 閱讀 1133

redis是乙個開源的使用ansi c語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、key-value資料庫,並提供多種語言的api。從2023年3月15日起,redis的開發工作由vmware主持。從2023年5月開始,redis的開發由pivotal贊助

釋義:字元型別

底層結構:簡單的key-value

限制:每個string能夠包含的最大容量是512m

編碼格式

1)int:整數值,這個整數值可以使用long型別來表示,如果是浮點數,那就用embstr或者raw編碼

2) embstr:字串值,這個字串值的長度小於39位元組

3) raw:字串值,這個字串值的長度大於39位元組

embstr和raw的區別:

1)raw分配記憶體和釋放記憶體的次數是兩次,embstr是一次

2)embstr編碼的資料儲存在一塊連續的記憶體裡面

常用命令

get:獲取

mget:批量獲取

set:設定

mset:批量設定

strlen:長度

釋義:雜湊表

用途:常用於儲存結構化資料

底層結構:雜湊表

限制:每個hash儲存的上限為2的32次方個

編碼格式

1)ziplist:跳表,key和value的字串長度都小於64位元組,鍵值對總數量小於512

2) hashtable:雜湊表,key和value的字串長度大於64位元組,鍵值對總數量大於512

編碼之間的轉換

原本是ziplist編碼的,如果儲存的資料長度太大或者元素數量過多,會轉換成hashtable編碼的。

常用命令

基礎命令

hset:設定

hmset:批量設定

hget:獲取

hmget:批量獲取

hexists:存在判斷

hsetnx:不存再則設定

hdel:刪除

hgetall:獲取全部

hlen:長度

其他命令

hincrby:自增長

hkeys:獲取全部的keys

hvals:獲取全部的值

釋義:有序列表

用途:可做簡單佇列

底層結構:雙向鍊錶

限制:乙個list的最大長度是2的32次方

編碼格式

1)ziplist:字串元素的長度都小於64個位元組,總數量少於512個

2) linkedlist:字串元素的長度大於64個位元組||總數量大於512個

編碼之間的轉換

原本是ziplist編碼的,如果儲存的資料長度太大或者元素數量過多,會轉換成linkedlist編碼的

常用命令

基礎

llen:長度

lrange:切片

lpop/rpop:彈出

lpush/rpush:新增

lrem:刪除

陣列

lindex:按索引檢索

lset:按索引賦值

其他

ltrim:保留片段

lpoplpush:移動

釋義:無序列表(去重)

用途:提供一系列的交集、並集、差集的命令

底層結構:

限制:乙個set的最大長度是2的32次方

編碼格式

1)intset:儲存的元素全都是整數,總數量小於512

2) hashtable:儲存的元素不是整數,總數量大於512

編碼之間的轉換

原本是intset編碼的,如果儲存的資料不是整數值或者元素數量大於512,會轉換成hashtable編碼的。

常用命令

基礎

sadd:新增

srem:刪除

smembers:獲取全部元素

slsmember:判斷存在

集合操作

sdiff:去同

sinter:交集

sunion:並集

其他

srandommember:獲取隨機元素

spop:隨機彈出元素

sdiffstore:去同儲存

sinterscore:交集儲存

sunionscore:並集儲存

釋義:有序集合對映(member-score)

用途:常用作排行榜

底層結構:

限制:乙個set的最大長度是2的32次方

編碼格式

1)ziplist:元素長度小於64,總數量小於128

2) skiplist:元素長度大於64,總數量大於128

編碼之間的轉換

原本是ziplist編碼的,如果儲存的資料長度大於64或者元素數量大於128,會轉換成skiplist編碼

有序集合(sortset)物件同時採用skiplist和雜湊表來實現

常用命令

基礎

hset:設定

hmset:批量設定

hget:獲取

hmget:批量獲取

hexists:存在判斷

hsetnx:不存再則設定

hdel:刪除

hgetall:獲取全部

hlen:長度

其他

hincrby:自增長

hkeys:獲取全部的keys

hvals:獲取全部的值

redis常用知識點之基礎資料型別

redis是乙個開源的使用ansi c語言編寫 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api。從2010年3月15日起,redis的開發工作由vmware主持。從2013年5月開始,redis的開發由pivotal贊助 釋義 字元型別 底層結構 簡單的k...

redis常用知識點之基礎資料型別

redis是乙個開源的使用ansi c語言編寫 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api。從2010年3月15日起,redis的開發工作由vmware主持。從2013年5月開始,redis的開發由pivotal贊助 釋義 字元型別 底層結構 簡單的k...

redis 常用知識點

1 redis 限流功能 1 首先設定對應的key值計數,然後給key設定對應的過期時間 2 每次呼叫對應的介面的時候獲取對應的計數器實現對應的資料計數功能,然後在比較過期時間。使用場景 1 在一定的時間內對於賬號不能重複登入多少次實現對應的資料限制 2 可以實現對應的登入錯誤不能夠實現再次登入邏輯...