首頁 > 軟體

詳解Redis 鍵和字串常用命令

2022-02-08 13:00:55

Redis 相關知識

Redis的預設埠號為6379

預設16個資料庫,類似陣列下標從0開始,初始預設使用0號庫。
使用命令select <dbid>來切換資料庫。 如: select 8。
統一密碼管理,所有庫同樣密碼。

dbsize檢視當前資料庫的key的數量。
flushdb清空當前庫。
flushall通殺全部庫。

Redis是單執行緒+多路IO複用技術。
多路複用是指使用一個執行緒來檢查多個檔案描述符( Socket )的就緒狀態,比如呼叫select和poll函數,傳入多個檔案描述符,如果有一個檔案描述符就緒,則返回,否則阻塞直到超時。得到就緒狀態後進行真正的操作可以在同一個執行緒裡執行,也可以啟動執行緒執行(比如使用執行緒池)。

序列 VS 多執行緒+鎖 ( memcached) VS 單執行緒+ 多路IO複用(Redis)
Redis與Memcache三點不同:

  • 支援多資料型別
  • 支援持久化
  • 單執行緒+多路IO複用

Redis中的資料型別

redis 鍵(key)

keys *:檢視當前庫所有key (匹配 : keys *1)

exists key:判斷某個key是否存在。
type key:檢視你的key是什麼型別。
del key:刪除指定的key資料,

unlink key:根據value選擇非阻塞刪除。僅將keys從keyspace後設資料中刪除,真正的刪除會在後續非同步操作。。
expire key 10:10 秒鐘,為給定的key設定過期時間,
ttl key:檢視還有多少秒過期, -1表示永不過期, -2表示已過期。

select命令切換資料庫,
dbsize檢視當前資料庫的key的數量。
flushdb清空當前庫。
flushall通殺全部庫

Redis字串(String)

String是Redis 最基本的型別,一個key對應一個value。
String型別是二進位制安全的。 意味著Redis的string可以包含任何資料。比如jpg圖片
或者序列化的物件。
String型別是Redis最基本的資料型別, 一個Redis中字串value最多可以是512M。

常用命令

set、get等

set <key> <value>:新增鍵值對。
當設定過值的key再被設定一個新的值時,新的值會覆蓋舊的。

*NX:當資料庫中key不存在時,可以將key-value新增資料庫。
*XX:當資料庫中key存在時,可以將key-value新增資料庫,與NX引數互斥。
*EX: key的超時秒數。
*PX: key 的超時毫秒數,與EX互斥。

get <key> 查詢對應鍵值.
append <key> <value>將給定的< value >追加到原值的末尾,
strlen <key> 獲得值的長度。
setnx <key> <value>只有在key不存在時設定 key的值.

增減建的值

incr <key>

將key中儲存的數位值增1。
只能對數位值操作,如果為空,新增值為10

decr <key>

將key中儲存的數位值減1。
只能對數位值操作。如果為空,新增值為-1。

inrjy/ decrby <key><步長> 將key中儲存的數位值增減。自定義步長。

注意:
incr和decr是原子操作
而java中的i++則不是原子操作

mset、mget和msetnx

mset <key1> <value1> <key2> <value2> ....

同時設定一個或多個key-value對。

mget <key1> <key2> <key3>

同時獲取一個或多個value。

msetnx <key1> <value1> <key2> <value2>

它是原子性的
同時設定一個或多個 key-value對,當且僅當所有給定key都不存在時,才成功。

有一個是之前存在的則不成功

getrange、setrange

getrange <key> <起始位置><結束位置>

獲得值的範圍,類似java中的substring ,前包,後包

setrange <key> <起始位置> <value>

用覆寫所儲存的字串值,從<起始位置:開始(索引從0開始)。

設定過期時間

setex <key> <過期時間><value>

設定鍵值的同時,設定過期時間,單位秒。

替換舊值

getset <key> <value>

以新換舊,設定了新值同時獲得舊值。

String的資料結構

String的資料結構為簡單動態字串(Simple Dynamic String,縮寫SDS)。是可以修改的字串,內部結構實現上類似於Java的ArrayList ,採用預分配冗餘空間的方式來減少記憶體的頻繁分配。

如圖中所示,內部為當前字串實際分配的空間capacity一般要高於實際字串長度len。當字串長度小於1M時,擴容都是加倍現有的空間,如果超過1M,擴容時一次只會多擴1M的空間。需要注意的是字串最大長度為512M。

到此這篇關於Redis 鍵和字串常用命令的文章就介紹到這了,更多相關Redis 常用命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com