Redis學習筆記--strings類型及操作1

set
設置key 對應的值為string 類型的value。例如我們添加一個name= HongWan 的鍵值對,可以這樣做:

redis 127.0.0.1:6379> set name HongWan
OK
redis 127.0.0.1:6379>

setnx
設置key 對應的值為string 類型的value。如果key 已經存在,返回0,nx 是not exist 的意思。例如我們添加一個name= HongWan_new 的鍵值對,可以這樣做:

redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379> setnx name HongWan_new
(integer) 0
redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379>

setex
設置key 對應的值為string 類型的value,并指定此鍵值對應的有效期。例如我們添加一個haircolor= red 的鍵值對,并指定它的有效期是10 秒,可以這樣做:

redis 127.0.0.1:6379> setex haircolor 10 red
OK
redis 127.0.0.1:6379> get haircolor
"red"
redis 127.0.0.1:6379> get haircolor
(nil)
redis 127.0.0.1:6379>

可見由于最后一次的調用是10 秒以后了,所以取不到haicolor 這個鍵對應的值。

setrange
設置指定key 的value 值的子字符串。例如我們希望將HongWan 的126 郵箱替換為gmail 郵箱,那么我們可以這樣做:

redis 127.0.0.1:6379> get name
"HongWan@126.com"
redis 127.0.0.1:6379> setrange name 8 gmail.com
(integer) 17
redis 127.0.0.1:6379> get name
"HongWan@gmail.com"
redis 127.0.0.1:6379>

其中的8 是指從下標為8(包含8)的字符開始替換

mset
一次設置多個key 的值,成功返回ok 表示所有的值都設置了,失敗返回0 表示沒有任何值被設置。

redis 127.0.0.1:6379> mset key1 HongWan1 key2 HongWan2
OK
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379>

msetnx
一次設置多個key 的值,成功返回ok 表示所有的值都設置了,失敗返回0 表示沒有任何值被設置,但是不會覆蓋已經存在的key。

redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> msetnx key2 HongWan2_new key3 HongWan3
(integer) 0
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> get key3
(nil)

可以看出如果這條命令返回0,那么里面操作都會回滾,都不會被執行。

get
獲取key 對應的string 值,如果key 不存在返回nil。例如我們獲取一個庫中存在的鍵name,可以很快得到它對應的value

redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379>

//我們獲取一個庫中不存在的鍵name1,那么它會返回一個nil 以表時無此鍵值對
redis 127.0.0.1:6379> get name1 
(nil)
redis 127.0.0.1:6379>

getset
設置key 的值,并返回key 的舊值

redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379> getset name HongWan_new
"HongWan"
redis 127.0.0.1:6379> get name
"HongWan_new"
redis 127.0.0.1:6379>

#接下來我們看一下如果key 不存的時候會什么樣兒?
redis 127.0.0.1:6379> getset name1 aaa  //可見,如果key 不存在,那么將返回nil
(nil)  
redis 127.0.0.1:6379>

getrange
獲取指定key 的value 值的子字符串。具體樣例如下:

redis 127.0.0.1:6379> get name
"HongWan@126.com"

#字符串左面下標是從0 開始的
redis 127.0.0.1:6379> getrange name 0 6
"HongWan"
redis 127.0.0.1:6379>

#字符串右面下標是從-1 開始的
redis 127.0.0.1:6379> getrange name -7 -1
"126.com"
redis 127.0.0.1:6379>

#當下標超出字符串長度時,將默認為是同方向的最大下標
redis 127.0.0.1:6379> getrange name 7 100
"@126.com"
redis 127.0.0.1:6379>

mget
一次獲取多個key 的值,如果對應key 不存在,則對應返回nil。具體樣例如下:

redis 127.0.0.1:6379> mget key1 key2 key3
1) "HongWan1"
2) "HongWan2"
3) (nil)   //key3 由于沒有這個鍵定義,所以返回nil。
redis 127.0.0.1:6379>

incr
對key 的值做加加操作,并返回新的值。注意incr 一個不是int 的value 會返回錯誤,incr 一個不存在的key,則設置key 為1

redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> incr age
(integer) 21
redis 127.0.0.1:6379> get age
"21"
redis 127.0.0.1:6379>

incrby
同incr 類似,加指定值 ,key 不存在時候會設置key,并認為原來的value 是 0

redis 127.0.0.1:6379> get age
"21"
redis 127.0.0.1:6379> incrby age 5
(integer) 26
redis 127.0.0.1:6379> get name
"HongWan@gmail.com"
redis 127.0.0.1:6379> get age
"26"
redis 127.0.0.1:6379>

decr
對key 的值做的是減減操作,decr 一個不存在key,則設置key 為-1

redis 127.0.0.1:6379> get age
"26"
redis 127.0.0.1:6379> decr age
(integer) 25
redis 127.0.0.1:6379> get age
"25"
redis 127.0.0.1:6379>

decrby
同decr,減指定值。

redis 127.0.0.1:6379> get age
"25"
redis 127.0.0.1:6379> decrby age 5
(integer) 20
redis 127.0.0.1:6379> get age
"20"
redis 127.0.0.1:6379>

#decrby 完全是為了可讀性,我們完全可以通過incrby 一個負值來實現同樣效果,反之一樣。
redis 127.0.0.1:6379> get age
"20"
redis 127.0.0.1:6379> incrby age -5
(integer) 15
redis 127.0.0.1:6379> get age
"15"
redis 127.0.0.1:6379>

append
給指定key 的字符串值追加value,返回新字符串值的長度。例如我們向name 的值追加一個@126.com 字符串,那么可以這樣做:

redis 127.0.0.1:6379> append name @126.com
(integer) 15
redis 127.0.0.1:6379> get name
"HongWan@126.com"
redis 127.0.0.1:6379>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容