Redis資料型別和常用命令

2021-10-10 07:16:53 字數 3346 閱讀 4878

redis 它通常被稱為資料結構伺服器,因為值(value)可以是

字串(string),雜湊(hash),列表(list),集合(sets)和有序集合(sorted sets)等型別。

redis字串(string)

redis字串資料型別的相關命令用於管理redis字串值。

string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg或者序列化物件。

string型別是redis最基本的資料型別,string型別的值最大能儲存512mb。

redis 127.0.0.1:6379> command key_name

例項redis 127.0.0.1:6379> set runoob "菜鳥教程"

redis 127.0.0.1:6379> get runoob

"菜鳥教程"

redis 雜湊(hash)

redis hash 是乙個鍵值(key=>value)對集合

redis hash 是乙個string型別的field(字段)和value(值)的對映表,hash特別適合用於儲存物件。

redis中每個hash可以儲存2^32-1鍵值對(40多億)

redis 127.0.0.1:6379>del runoob

redis 127.0.0.1:6379>hmset runoob field1 "hello" field2 "world"

"ok"

redis 127.0.0.1:6379> hget runoob field1

redis 127.0.0.1:6379> hget runoob field1

"world"

redis 列表(list)

redis列表是簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部(左邊)

或者尾部(右邊)乙個列表最多可以包含2^32-1元素(4294967295,

每個列表超過40億個元素)

redis 127.0.0.1:6379> lpush runoobkey redis

(integer) 1

redis 127.0.0.1:6379> lpush runoobkey mongodb

(integer) 2

redis 127.0.0.1:6379> lpush runoobkey mysql

(integer) 3

redis 127.0.0.1:6379> lrange runoobkey 0 10

1) "mysql"

2) "mongodb"

3) "redis"

set(集合)

redis的set是string型別的無序集合。

集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。

sadd命令

新增乙個string元素到key對應的set集合中,成功返回1,如果元素已經在集合中返回0。

redis 127.0.0.1:6379> del runoob

redis 127.0.0.1:6379> sadd runoob redis

(integer) 1

redis 127.0.0.1:6379> sadd runoob mongodb

(integer) 1

redis 127.0.0.1:6379> sadd runoob rabitmq

(integer) 1

redis 127.0.0.1:6379> sadd runoob rabitmq

(integer) 0

redis 127.0.0.1:6379> smembers runoob

1) "redis"

2) "rabitmq"

3) "mongodb"

zset(sorted set: 有序集合)

redis zset和set一樣也是string型別元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數為集合中的成員進行從小到大的排序。

zset的成員是唯一的,但分數(score)卻可以重複。

zadd命令

新增元素到集合,元素在集合中存在則更新對應socre

zadd key score member

redis 事務

redis事務可以一次執行多個命令,並且帶有以下三個重要的保證:

(1)批量操作在傳送exec命令前被放入佇列快取。

(2)收到exec命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然被執行。

(3)在事務執行過程,其他客戶端提交的命令請求不會插入到事務執行命令序列中。

乙個事務從開始到執行會經歷以下三個階段:

(1)開始事務。

(2)命令入隊。

(3)執行事務。

以下是乙個事務的例子, 它先以 multi 開始乙個事務, 然後將多個命令入隊到事務中, 最後由 exec 命令觸發事務, 一併執行事務中的所有命令:

redis 127.0.0.1:6379> multi

okredis 127.0.0.1:6379> set book-name "mastering c++ in 21 days"

queued

redis 127.0.0.1:6379> get book-name

queued

redis 127.0.0.1:6379> sadd tag "c++" "programming" "mastering series"

queued

redis 127.0.0.1:6379> smembers tag

queued

redis 127.0.0.1:6379> exec

1) ok

2) "mastering c++ in 21 days"

3) (integer) 3

4) 1) "mastering series"

2) "c++"

3) "programming"

單個redis命令的執行是原子性的,但redis沒有在事務上增加任何維持原子性的機制,所

以redis事務的執行並不是原子性的。事務可以理解為乙個打包的批量執行指令碼,但批量指

令並非原子化的操作,中間某條指令的失敗不會導致前面已做指令的回滾,也不會造成

後續的指令不做。

Redis資料型別list型別常用命令

列表型別可以儲存乙個有序的字串列表,常用的操作是向列表兩端新增元素,或者獲得列表的某乙個片段。列表型別內部是使用雙向鍊錶實現的,所以列表兩端新增元素是非常快的,獲取越接近兩端的元素速度就越快。通過列表特點可以模擬棧 佇列 社交 的新鮮事,我們關心的只是最新的內容,使用列表型別儲存,即使新鮮事的總數達...

Redis 常用命令,基礎資料型別

redis五大資料型別 string 字串 單個key裡面有單個值 不可重複 重複新增會覆蓋 hash 雜湊 單個key裡面有多個字段 每個字段裡面都有值 不可重複 重複新增沒啥用 list 列表 單個key裡面有多個值 可以重複 set 集合 單個key裡面有多個值 不可重複 重複新增沒啥用 zs...

Redis資料型別的常用命令

redis資料型別 資料型別不支援型別巢狀 字串型別 雜湊型別 列表型別 集合型別 有序集合型別 redis命令 key命名可以採用 物件型別 物件id 物件屬性 如 user 1 friends 表示使用者為1的好友列表 全域性相關 keys pattern 獲得符合規則的鍵名列表,pattern...