redis支援的資料型別 strings

2021-09-29 12:15:31 字數 2873 閱讀 8094

這是最簡單redis型別。如果你只用這種型別,redis就像乙個可以持久化的memcached伺服器(注:memcache的資料僅儲存在記憶體中,伺服器重啟後,資料將丟失)。

get key

獲取對應鍵的值

set key value

設定對應鍵的值

del key

刪除對應鍵值

incr key

指定鍵的值自增1,如果key不存在,自增後get(key)=1

decr key

指定鍵的值自減1,如果key不存在,自減後get(key)=-1

setnx key value

key不存在時,才生效

set key value xx

key存在時,才生效

mset k1 v1 k2 v2…kn vn

設定多個鍵值對

getset key newvalue

設定對應key為newvalue,同時返回舊的value

將value追加到舊的value

strlen key

返回字串的長度(注意中文)

incrbyfloat key 3.5

key對應的值加3.5

getrange key start end

獲取字串指定下標所有的值(下標從0開始)

setrange key index value

設定指定下標所對應的值

通常用set command 和 get command來設定和獲取字串值

> set mykey somevalue

ok> get mykey

"somevalue"

當key存在時set會失敗,或相反的,當key不存在時它只會成功

> set mykey newval nx

(nil)

> set mykey newval xx

ok

雖然字串是redis的基本值型別,但你仍然能通過它完成一些有趣的操作。例如:原子遞增:

> set counter 100

ok> incr counter

(integer) 101

> incr counter

(integer) 102

> incrby counter 50

(integer) 152

incr 命令將字串值解析成整型,將其加一,最後將結果儲存為新的字串值,類似的命令有incrby, decr 和 decrby。實際上他們在內部就是同乙個命令,只是看上去有點兒不同。

incr是原子操作意味著什麼呢?就是說即使多個客戶端對同乙個key發出incr命令,也決不會導致競爭的情況。例如如下情況永遠不可能發生:『客戶端1和客戶端2同時讀出「10」,他們倆都對其加到11,然後將新值設定為11』。最終的值一定是12,read-increment-set操作完成時,其他客戶端不會在同一時間執行任何命令。

對字串,另乙個的令人感興趣的操作是getset命令,行如其名:他為key設定新值並且返回原值。這有什麼用處呢?例如:你的系統每當有新使用者訪問時就用incr命令操作乙個redis key。你希望每小時對這個資訊收集一次。你就可以getset這個key並給其賦值0並讀取原值。

為減少等待時間,也可以一次儲存或獲取多個key對應的值,使用msetmget命令:

> mset a 10 b 20 c 30

ok> mget a b c

1) "10"

2) "20"

3) "30"

mget 命令返回由值組成的陣列。

為減少等待時間,也可以一次儲存或獲取多個key對應的值,使用mset和mget命令:值可以是任何種類的字串(包括二進位制資料),例如你可以在乙個鍵下儲存一副jpeg。值的長度不能超過512 mb。

修改或查詢鍵空間

使用exists命令返回1或0標識給定key的值是否存在

使用del命令可以刪除key對應的值,del命令返回1或0標識值是被刪除(值存在)或者沒被刪除(key對應的值不存在)。

> set mykey hello

ok> exists mykey

(integer) 1

> del mykey

(integer) 1

> exists mykey

(integer) 0

type命令可以返回key對應的值的儲存型別:

> set mykey x

ok> type mykey

string

> del mykey

(integer) 1

> type mykey

none

redis超時:資料在限定時間內存活

ttl命令用來檢視key對應的值剩餘存活時間。

在介紹複雜型別前我們先介紹乙個與值型別無關的redis特性:超時。你可以對key設定乙個超時時間,當這個時間到達後會被刪除。精度可以使用毫秒或秒。

> set key some-value

ok> expire key 5

(integer) 1

> get key (immediately)

"some-value"

> get key (after some time)

(nil)

> set key 100 ex 10

ok> ttl key

(integer) 9

Redis支援的資料型別

1 字串 string 2 列表 list 3 集合 set 4 有序集合 zset 5 雜湊 hash 6 地理位置 geo 7 流 stream 設定鍵值 set key value 獲取鍵值 get key 乙個鍵值最大儲存512mb,可以儲存任何資料,如影象或序列化的物件 左插 lpush ...

redis支援的資料型別

對應的值 常用場景 key string 乙個key對應乙個字串 最常用,儲存乙個值 key hash 乙個key對應乙個map 儲存物件 key list 乙個key對應有序可重複的集合 使用list結構實現棧和佇列結構 key set 乙個key對應有序不可重複的集合 交集,差集和並集的操作 k...

redis支援的資料型別 set

集合的特點是元素是無序 不重複,支援集合間的操作 即兩個集合取交集 並集 差集 命令 注意集合的命令是以 s 為字首 交集 並集和差集分別對應方法 sinter,sunion,sdiff。sadd key element 向集合key新增element,若存在則失敗 srem key element...