NoSQL----Redis2.4--String

一、簡(jiǎn)介:string:字符串類型是redis中最為基礎(chǔ)的數(shù)據(jù)存儲(chǔ)類型,它在Redis中是二進(jìn)制安全的,這便意味著該類型可以接受任何格式的數(shù)據(jù),如JPEG圖像數(shù)據(jù)或Json對(duì)象描述信息等。在Redis中字符串類型的Value最多可以容納的數(shù)據(jù)長(zhǎng)度是512M.

成都創(chuàng)新互聯(lián)致力于做網(wǎng)站、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!

二、應(yīng)用場(chǎng)景:

    實(shí)時(shí)記錄網(wǎng)站每天的的PV和UV

    實(shí)時(shí)新浪微博每個(gè)賬號(hào)關(guān)注和被關(guān)注人數(shù)。

三、常用操作:

1、set方法:

set key value

將key的值設(shè)為value。

如果key已經(jīng)存在,set就覆蓋舊值。

例如:redis> set color red

    redis> get color

       "red"

    redis> set color black

    redis> get color

       "black"

2、setnx方法:

setnx key value

將key的值設(shè)為value,當(dāng)且僅當(dāng)key不存在。

若key已經(jīng)存在,則SETNX不覆蓋舊值,即保持原值。

SETNX是”SET if Not eXists”(如果不存在,則SET)的簡(jiǎn)寫。

例如:

redis> SETNX job "programmer"  

(integer) 1  job設(shè)置成功

redis> SETNX job "code-farmer"  

(integer) 0  job設(shè)置失敗

redis> GET job  

"programmer"  沒有被覆蓋

3、setex方法:

SETEX key seconds value

將key的值設(shè)為value,并將key的生存時(shí)間設(shè)為seconds(以秒為單位)。

如果key 已經(jīng)存在,SETEX命令將覆蓋舊值。

注意:這個(gè)命令類似于以下兩個(gè)命令:

SET key value

EXPIRE key seconds  # 設(shè)置生存時(shí)間

不同之處是,SETEX是一個(gè)原子性(atomic)操作,關(guān)聯(lián)值和設(shè)置生存時(shí)間兩個(gè)動(dòng)作會(huì)在同一時(shí)間內(nèi)完成,該命令在Redis用作緩存時(shí),非常實(shí)用。


4、setrange方法:

setrangekey offset value

用value參數(shù)覆寫給定key所儲(chǔ)存的字符串值,從下標(biāo)offset開始。

redis> set email haha@163.com

redis> get email 

    haha@163.com

redis> setrange email 5 google.com

redis> get email 

    haha@google.com

redis> setrange email 5 sina.cn

redis> get email 

    haha@sina.cncom

5、mset方法:    

MSET key value [key value ...]

同時(shí)設(shè)置一個(gè)或多個(gè)key-value對(duì)。

當(dāng)發(fā)現(xiàn)同名的key存在時(shí),MSET會(huì)用新值覆蓋舊值,如果你不希望覆蓋同名key,請(qǐng)使用MSETNX命令。

MSET是一個(gè)原子性(atomic)操作,所有給定key都在同一時(shí)間內(nèi)被設(shè)置,某些給定key被更新而另一些給定key沒有改變的情況,不可能發(fā)生。

redis> MSET date "2015.11.11" time "9.09a.m." weather "sunny"
OK

6、append方法:

APPEND key value

如果key已經(jīng)存在并且是一個(gè)字符串,APPEND命令將value追加到key原來的值之后。

如果key不存在,APPEND就簡(jiǎn)單地將給定key設(shè)為value,就像執(zhí)行SET key value一樣。


# 情況1:對(duì)不存在的key執(zhí)行APPEND

redis> EXISTS myphone  # 確保myphone不存在
(integer) 0

redis> APPEND myphone "mi"  # 對(duì)不存在的key進(jìn)行APPEND,等同于SET myphone "mi"
(integer) 5 # 字符長(zhǎng)度


# 情況2:對(duì)字符串進(jìn)行APPEND

redis> APPEND myphone " - 1110"
(integer) 12  # 長(zhǎng)度從5個(gè)字符增加到12個(gè)字符

redis> GET myphone  # 查看整個(gè)字符串
"mi - 1110"

7、get方法:

get key

返回key所關(guān)聯(lián)的字符串值。

如果key不存在則返回特殊值nil。

假如key儲(chǔ)存的值不是字符串類型,返回一個(gè)錯(cuò)誤,因?yàn)镚ET只能用于處理字符串值。

redis> GET animate
(nil)

redis> SET animate "anohana"
OK

redis> GET animate
"anohana"

8、mget方法:

MGET key [key ...]

返回所有(一個(gè)或多個(gè))給定key的值。

如果某個(gè)指定key不存在,那么返回特殊值nil。因此,該命令永不失敗。

9、getrange方法:

GETRANGE key start end

返回key中字符串值的子字符串,字符串的截取范圍由startend兩個(gè)偏移量決定(包括startend在內(nèi))。

負(fù)數(shù)偏移量表示從字符串最后開始計(jì)數(shù),-1表示最后一個(gè)字符,-2表示倒數(shù)第二個(gè),以此類推。

GETRANGE通過保證子字符串的值域(range)不超過實(shí)際字符串的值域來處理超出范圍的值域請(qǐng)求。

備注:在<=2.0的版本里,GETRANGE被叫作SUBSTR。

redis> SET greeting "hello, my friend"
OK

redis> GETRANGE greeting 0 4  # 返回索引0-4的字符,包括4。
"hello"

redis> GETRANGE greeting -1 -5  # 不支持回繞操作,必須從前往后截取
""

redis> GETRANGE greeting -3 -1  # 負(fù)數(shù)索引
"end"

redis> GETRANGE greeting 0 -1  # 從第一個(gè)到最后一個(gè)
"hello, my friend"

redis> GETRANGE greeting 0 1008611  # 值域范圍不超過實(shí)際字符串,超過部分自動(dòng)被符略"hello, my friend"


GETSET key value
將給定key的值設(shè)為value,并返回key的舊值。
當(dāng)key存在但不是字符串類型時(shí),返回一個(gè)錯(cuò)誤。

redis> GETSET mail xxx@google.com  # 因?yàn)閙ail之前不存在,沒有舊值,返回nil
(nil)

redis> GETSET mail xxx@yahoo.com  # mail被更新,舊值被返回
"xxx@google.com"

strlen key
返回key所儲(chǔ)存的字符串值的長(zhǎng)度。
當(dāng)key儲(chǔ)存的不是字符串值時(shí),返回一個(gè)錯(cuò)誤。
當(dāng) key不存在時(shí),返回0。
redis> SET mykey "Hello world"
OK

redis> STRLEN mykey
(integer) 11

redis> STRLEN nonexisting # 不存在的key長(zhǎng)度視為0
(integer) 0

12、incr方法:

INCR key

將key中儲(chǔ)存的數(shù)字值+1。

如果key不存在,以0為key的初始值,然后執(zhí)行INCR操作。

如果值包含錯(cuò)誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤。

本操作的值限制在64位(bit)有符號(hào)數(shù)字表示之內(nèi)。

redis> SET page_view 20
OK

redis> INCR page_view
(integer) 21

redis> GET page_view    # 數(shù)字值在Redis中以字符串的形式保存
"21"

13、incrby方法:

INCRBY key increment

key所儲(chǔ)存的值加上增量increment。

如果key不存在,以0key的初始值,然后執(zhí)行INCRBY命令。

如果值包含錯(cuò)誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤。

本操作的值限制在64位(bit)有符號(hào)數(shù)字表示之內(nèi)。

關(guān)于更多遞增(increment)/遞減(decrement)操作信息,參見INCR命令。


# 情況1:key存在且是數(shù)字值

redis> SET rank 50  # 設(shè)置rank為50
OK

redis> INCRBY rank 20  # 給rank加上20
(integer) 70

redis> GET rank
"70"

redis> INCRBY rank -20  # 給rank加上-20
(integer) 50

# 情況2:key不存在

redis> EXISTS counter
(integer) 0

redis> INCRBY counter 30
(integer) 30

redis> GET counter
"30"


# 情況3:key不是數(shù)字值

redis> SET book "long long ago..."
OK

redis> INCRBY book 200
(error) ERR value is not an integer or out of range

key中儲(chǔ)存的數(shù)字值-1。
如果key不存在,以0為key的初始值,然后執(zhí)行DECR操作。
如果值包含錯(cuò)誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤。
本操作的值限制在64位(bit)有符號(hào)數(shù)字表示之內(nèi)。
關(guān)于更多遞增(increment)/遞減(decrement)操作信息,參見INCR命令。
 情況1:對(duì)存在的數(shù)字值key進(jìn)行DECR

redis> SET failure_times 10
OK

redis> DECR failure_times
(integer) 9


# 情況2:對(duì)不存在的key值進(jìn)行DECR

redis> EXISTS count
(integer) 0

redis> DECR count
(integer) -1


# 情況3:對(duì)存在但不是數(shù)值的key進(jìn)行DECR

redis> SET company YOUR_CODE_SUCKS.LLC
OK

redis> DECR company
(error) ERR value is not an integer or out of range
15、decrby方法:

DECRBY key decrement

將key所儲(chǔ)存的值減去減量decrement。

如果key不存在,以0為key的初始值,然后執(zhí)行DECRBY操作。

如果值包含錯(cuò)誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤。

本操作的值限制在64位(bit)有符號(hào)數(shù)字表示之內(nèi)。

關(guān)于更多遞增(increment)/遞減(decrement)操作信息,參見INCR命令

# 情況1:對(duì)存在的數(shù)值key進(jìn)行DECRBY

redis> SET count 100
OK

redis> DECRBY count 20
(integer) 80


# 情況2:對(duì)不存在的key進(jìn)行DECRBY

redis> EXISTS pages
(integer) 0

redis> DECRBY pages 10
(integer) -10

redis> DECRBY pages -20
(integer) 10

網(wǎng)站標(biāo)題:NoSQL----Redis2.4--String
分享地址:http://muchs.cn/article6/ghhpog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、微信公眾號(hào)、軟件開發(fā)、App設(shè)計(jì)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司