【redis 學習系列】API的理解與使用
Redis提供了5種數據結構,以下介紹一些預備知識以及Redis的5種數據結構
1、預備知識
1.1 全局命令
Redis的5種數據結構,它們是鍵值對中的值,對於鍵來說有一些通用的命令。
(1)查看所有的鍵
1 keys *
(2)鍵總數
1 dbsize
dbsize會返回當前數據庫中鍵的總和,例如當前數據庫中有4個鍵即hello java python mylist,所以測試結果為4。註意,dbsize在計算鍵總數時不會遍歷所有的鍵,而是直接獲取
Redis內置的鍵總和的變量,所以此命令的時間復雜度為O(1)。然而命令keys *會遍歷所有的鍵,所以它的時間復雜度為O(n)
(3)檢查鍵是否存在
1 exists key
如果鍵存在則返回1,不存在則返回0。
(4)刪除鍵
1 del key [key1 ...]
del是一個通用命令,無論鍵值是何種數據結構,del命令都可以將其刪除,例如刪除鍵值類型為字符串類型的java以及類型為列表類型的mylist。
返回結果為成功刪除鍵的個數,假設刪除一個不存在的鍵,就會返回0。同時del命令支持同時刪除多個鍵。
(5)鍵過期
1 expire key seconds
Redis支持對鍵添加過期時間,當超過過期時間後,將會自動刪除鍵,例如為鍵hello設置了10秒的過期時間。
這裏的ttl命令會返回鍵的剩余過期時間,它有3種返回值:
- 大於或等於0的整數:鍵剩余的過期時間
- -1:鍵沒有設置過期時間
- -2:鍵不存在
(6)鍵的數據類型
1 type key
例如鍵hello是字符串類型,返回結果為string。鍵mylist是列表類型,返回結果為list。如果鍵不存在,則返回none
1.2 數據結構及內部編碼
在終端可以使用object encoding命令查詢內部編碼。
2、字符串
字符串類型是Redis最基礎的數據結構,首先鍵都是字符串類型,而其他幾種數據結構都是在字符串類型的基礎上構建的,所以字符串類型能為其它4種數據結構的學習奠定基礎。字符串的類型可以使字符串(簡單字符串、復雜字符串(例如json以及XML))、數字(整型、浮點數)、二進制(圖片、音視頻)。但是占用的空間最大不能超過512M
2.1 命令
2.1.1 常用命令
(1)設置值
1 set key value [ex seconds] [px milliseconds] [nx|xx]
上述命令的常用選項:
- ex seconds:為鍵設置秒級過期時間。
- px milliseconds:為鍵設置毫秒級過期時間。
- nx:鍵必須不存在,才能設置成功,用於添加。
- xx:與nx相反,鍵必須存在,才能設置成功,用於更新。
除了set選項,Redis還提供了setex和setnx兩個命令,他們的作用與ex和nx選項是一樣的。
1 setex key seconds value 2 setnx key value
setnx和setxx在實際的場景有何應用呢?以setnx命令為例,由於Redis的單線程命令處理機制,如果有多個客戶端同時執行setnx key value,根據setnx的特性,只有一個客戶端能設置成功,setnx可以作為分布式鎖的一種實現方案。
【redis 學習系列】API的理解與使用