1. 程式人生 > >【redis 學習系列】API的理解與使用

【redis 學習系列】API的理解與使用

全局命令 時間復雜度 總數 鍵值 seconds clas mil height 同時

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)

。當Redis保存了大量的鍵時,線上環境禁止使用命令keys *

(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的理解與使用