真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

redis數(shù)據(jù)類(lèi)型strings的詳細(xì)介紹-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“redis數(shù)據(jù)類(lèi)型strings的詳細(xì)介紹”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“redis數(shù)據(jù)類(lèi)型strings的詳細(xì)介紹”吧!

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出谷城免費(fèi)做網(wǎng)站回饋大家。

1.     String(字符串)

string是最簡(jiǎn)單的類(lèi)型,你可以理解成與Memcached一模一樣的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value,其上支持的操作與Memcached的操作類(lèi)似。但它的功能更豐富。

redis采用結(jié)構(gòu)sdshdr和sds封裝了字符串,字符串相關(guān)的操作實(shí)現(xiàn)在源文件sds.h/sds.c中。在Redis中字符串類(lèi)型的Value最多可以容納的數(shù)據(jù)長(zhǎng)度是512M

在Redis中是二進(jìn)制安全的,這便意味著該類(lèi)型可以接受任何格式的數(shù)據(jù),如JPEG圖像數(shù)據(jù)或Json對(duì)象描述信息等

數(shù)據(jù)結(jié)構(gòu)定義如下:

typedefchar*sds;

structsdshdr{

   longlen;

   longfree;

   charbuf[];

};

1.1. SET

Set key value [EX seconds] [PXmilliseconds] [NX|XX]

將字符串值value關(guān)聯(lián)到key。如果key已經(jīng)持有其他值,SET 就覆寫(xiě)舊值,無(wú)視類(lèi)型。對(duì)于某個(gè)原本帶有生存時(shí)間(TTL)的鍵來(lái)說(shuō),當(dāng) SET 命令成功在這個(gè)鍵上執(zhí)行時(shí), 這個(gè)鍵原有的 TTL 將被清除。

可選參數(shù)

從 Redis 2.6.12 版本開(kāi)始,SET 命令的行為可以通過(guò)一系列參數(shù)來(lái)修改:

  • EXsecond:設(shè)置鍵的過(guò)期時(shí)間為 second秒。 SET key value EX second效果等同于SETEXkey second value。

  • PXmillisecond:設(shè)置鍵的過(guò)期時(shí)間為 millisecond毫秒。 SET key value PX millisecond效果等同于PSETEXkey millisecond value。

  • NX:只在鍵不存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作。SETkey value NX效果等同于 SETNX key value。

  • XX:只在鍵已經(jīng)存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作。

#賦值與取值

127.0.0.1:6379> set dbredis

OK

127.0.0.1:6379> get db

"redis"

#使用ex選項(xiàng)

127.0.0.1:6379> set dbredis ex 20

OK

127.0.0.1:6379> ttl db

(integer) 16

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> ttl db

(integer) 5

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> get db

(nil)

#使用 PX 選項(xiàng)

127.0.0.1:6379>set db redis px 20000

OK

127.0.0.1:6379>PTTL db

(integer)15674

127.0.0.1:6379>PTTL db

(integer)8974

127.0.0.1:6379>PTTL db

(integer)8045

127.0.0.1:6379>get db

"redis"

127.0.0.1:6379>PTTL db

(integer)2482

127.0.0.1:6379>get db

"redis"

127.0.0.1:6379>get db

(nil)

#使用 NX 選項(xiàng)

127.0.0.1:6379>set db oracle NX

OK

127.0.0.1:6379>get db

"oracle"

127.0.0.1:6379>set db redis NX ---鍵存在,失敗

(nil)

127.0.0.1:6379>get db

"oracle"

#使用 XX 選項(xiàng)

127.0.0.1:6379>exists name

(integer)0

127.0.0.1:6379>get name

(nil)

127.0.0.1:6379>set name hunt1574 XX ---鍵不存在,失敗

(nil)

127.0.0.1:6379>set name redis

OK

127.0.0.1:6379>set name hunt1574 XX

OK

127.0.0.1:6379>get name

"hunt1574"

1.2. SETEX

Setex key seconds value

將值 value 關(guān)聯(lián)到 key ,并將key 的生存時(shí)間設(shè)為 seconds (以秒為單位)。

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

這個(gè)命令類(lèi)似于以下兩個(gè)命令:

SETkey value

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

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

#key不存在賦值

127.0.0.1:6379>EXISTS user

(integer)0

127.0.0.1:6379>setex user 30 root

OK

127.0.0.1:6379>get user

"root"

127.0.0.1:6379>ttl user

(integer)15

127.0.0.1:6379>get user

(nil)

#key存在賦值

127.0.0.1:6379>setex user 20 admin

OK

127.0.0.1:6379>get user

"admin"

127.0.0.1:6379>ttl user

(integer)14

127.0.0.1:6379>get user

(nil)

1.3. SETNX

SETNX key value

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

若給定的 key 已經(jīng)存在,則 SETNX 不做任何動(dòng)作。

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

#賦值與取值

127.0.0.1:6379>EXISTS www

(integer)0

127.0.0.1:6379>setnx www code.google.com

(integer)1

127.0.0.1:6379>setnx www redis.io

(integer)0

127.0.0.1:6379>get www

"code.google.com"

127.0.0.1:6379>

1.4. SETRANGE

SETRANGE key offset value

用 value 參數(shù)覆寫(xiě)(overwrite)給定offset的 key 所儲(chǔ)存的字符串值

127.0.0.1:6379>set www code.google.com

OK

127.0.0.1:6379>get www

"code.google.com"

127.0.0.1:6379>SETRANGE www 0 mail

(integer)15

127.0.0.1:6379>get www

"mail.google.com"

127.0.0.1:6379>SETRANGE www 0 gmail

(integer)15

127.0.0.1:6379>get www

"gmailgoogle.com"

1.5. MSET

MSET key value [key value ...]

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

如果某個(gè)給定 key 已經(jīng)存在,那么 MSET 會(huì)用新值覆蓋原來(lái)的舊值,如果這不是你所希望的效果,請(qǐng)考慮使用 MSETNX 命令:它只會(huì)在所有給定 key 都不存在的情況下進(jìn)行設(shè)置操作。

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

#賦值與取值

127.0.0.1:6379>mset os "linux" db "redis" date "2015-03-17"

OK

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3)"2015-03-17"

#值覆蓋

127.0.0.1:6379>mset os "linux" db "oracle" date "2015-03-17"

OK

127.0.0.1:6379>mget os db date

1)"linux"

2)"oracle"

3)"2015-03-17"

127.0.0.1:6379>

1.6. MSETNX

MSETNX key value [key value ...]

同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì),當(dāng)且僅當(dāng)所有給定 key 都不存在。

即使只有一個(gè)給定 key 已存在,MSETNX 也會(huì)拒絕執(zhí)行所有給定 key 的設(shè)置操作。MSETNX是原子性的,因此它可以用作設(shè)置多個(gè)不同 key 表示不同字段(field)的唯一性邏輯對(duì)象(unique logic object),所有字段要么全被設(shè)置,要么全不被設(shè)置。

#賦值與取值

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3) "2015-03-17"

127.0.0.1:6379>msetnx os "linux" db "oracle" date "2015-03-17"

(integer)0

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3)"2015-03-17"

127.0.0.1:6379>

1.7. GET

GET key

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

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

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

127.0.0.1:6379>set dbname redis

OK

127.0.0.1:6379>get dbname

"redis"

127.0.0.1:6379>get dbversion

(nil)

127.0.0.1:6379>lpush db redis mysql mongodb

(integer)3

127.0.0.1:6379>get db

(error)WRONGTYPE Operation against a key holding the wrong kind of value

1.8. MGET

MGET key [key ...]

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

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

#賦值與取值

127.0.0.1:6379>set date 2015-03-17

OK

127.0.0.1:6379>set time 10:00

OK

127.0.0.1:6379>mget date time

1)"2015-03-17"

2)"10:00"

127.0.0.1:6379>mget date time week ---week不存在,返回nil

1)"2015-03-17"

2)"10:00"

3)(nil)

1.9. GETRANGE

GETRANGE key startend

返回 key 中字符串值的子字符串,字符串的截取范圍由 start 和 end 兩個(gè)偏移量決定(包括start 和 end 在內(nèi))。負(fù)數(shù)偏移量表示從字符串最后開(kāi)始計(jì)數(shù), -1 表示最后一個(gè)字符, -2 表示倒數(shù)第二個(gè),以此類(lèi)推。范圍超過(guò)字符串大下標(biāo)值以大下標(biāo)值為準(zhǔn)。

#賦值與取值

127.0.0.1:6379>set www redis.io

OK

127.0.0.1:6379>GETRANGE www 0 4

"redis"

127.0.0.1:6379>GETRANGE www -2 -1

"io"

127.0.0.1:6379>GETRANGE www -100 -1

"redis.io"

1.10.      GETSET

GETSET key value

將給定 key 的值設(shè)為 value ,并返回key 的舊值(old value)。

當(dāng) key 存在但不是字符串類(lèi)型時(shí),返回一個(gè)錯(cuò)誤。

127.0.0.1:6379>getset dbname mysql

(nil)

127.0.0.1:6379>get dbname

"mysql"

127.0.0.1:6379>getset dbname redis

"mysql"

127.0.0.1:6379>get dbname

"redis"

1.11.      INCR

INCR key

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

如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 INCR 操作。如果值包含錯(cuò)誤的類(lèi)型,或字符串類(lèi)型的值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤。

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

127.0.0.1:6379>EXISTS pages

(integer)0

127.0.0.1:6379>incr pages

(integer)1

127.0.0.1:6379>get pages

"1"

127.0.0.1:6379>set rows 0

OK

127.0.0.1:6379>incr rows

(integer)1

127.0.0.1:6379>incr rows

(integer)2

127.0.0.1:6379>incr rows

(integer)3

127.0.0.1:6379>get rows

"3"

127.0.0.1:6379>

1.12.      INCRBY

INCRBY keyincrement

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

如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 INCRBY 命令。

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

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

#鍵存在

127.0.0.1:6379>get rows

"3"

127.0.0.1:6379>INCRBY rows 3

(integer)6

127.0.0.1:6379>INCRBY rows 3

(integer)9

127.0.0.1:6379>INCRBY rows 3

(integer)12

#鍵不存在

127.0.0.1:6379>get num

(nil)

127.0.0.1:6379>INCRBY num -2

(integer)-2

127.0.0.1:6379>INCRBY num -2

(integer)-4

127.0.0.1:6379>INCRBY num -2

(integer)-6

1.13.      INCRBYFLOAT

INCRBYFLOAT keyincrement

為 key 中所儲(chǔ)存的值加上浮點(diǎn)數(shù)增量 increment 。

如果 key 不存在,那么 INCRBYFLOAT 會(huì)先將 key 的值設(shè)為 0 ,再執(zhí)行加法操作。

如果命令執(zhí)行成功,那么 key 的值會(huì)被更新為(執(zhí)行加法之后的)新值,并且新值會(huì)以字符串的形式返回給調(diào)用者。

無(wú)論是 key 的值,還是增量 increment ,都可以使用像 2.0e7 、 3e5 、 90e-2 那樣的指數(shù)符號(hào)(exponential notation)來(lái)表示,但是,執(zhí)行 INCRBYFLOAT 命令之后的值總是以同樣的形式儲(chǔ)存,也即是,它們總是由一個(gè)數(shù)字,一個(gè)(可選的)小數(shù)點(diǎn)和一個(gè)任意位的小數(shù)部分組成(比如 3.14 、 69.768 ,諸如此類(lèi)),小數(shù)部分尾隨的 0 會(huì)被移除,如果有需要的話(huà),還會(huì)將浮點(diǎn)數(shù)改為整數(shù)(比如 3.0 會(huì)被保存成 3 )。

127.0.0.1:6379>set price 45.99

OK

127.0.0.1:6379>INCRBYFLOAT price 4.5

"50.49"

127.0.0.1:6379>INCRBYFLOAT price 4.5

"54.99"

127.0.0.1:6379>get num

(nil)

127.0.0.1:6379>INCRBYFLOAT num 5.3

"5.3"

127.0.0.1:6379>INCRBYFLOAT num 5.3

"10.6"

1.14.      DECR

DECR key

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

如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 DECR 操作。

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

127.0.0.1:6379>set price 398.99

OK

127.0.0.1:6379>decr price

(error)ERR value is not an integer or out of range

127.0.0.1:6379>set pages 98

OK

127.0.0.1:6379>decr pages

(integer)97

127.0.0.1:6379>decr pages

(integer)96

1.15.      DECRBY

DECRBY keydecrement

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

如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 DECRBY 操作。

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

127.0.0.1:6379>get pages

"96"

127.0.0.1:6379>decrby pages 5

(integer)91

127.0.0.1:6379>decrby pages 5

(integer)86

127.0.0.1:6379>decrby pages -5

(integer)91

127.0.0.1:6379>decrby pages -5

(integer)96

127.0.0.1:6379>

1.16.      APPEND

APPEND key value

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

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

127.0.0.1:6379> get db

(nil)

127.0.0.1:6379> APPENDdb redis

(integer) 5

127.0.0.1:6379> APPENDdb .io

(integer) 8

127.0.0.1:6379> get db

"redis.io"

127.0.0.1:6379>

1.17.      STRLEN

STRLEN key

返回 key 所儲(chǔ)存的字符串值的長(zhǎng)度。

當(dāng) key 儲(chǔ)存的不是字符串值時(shí),返回一個(gè)錯(cuò)誤。

127.0.0.1:6379> getpages

"96"

127.0.0.1:6379> STRLENpages

(integer) 2

127.0.0.1:6379> get db

"redis.io"

127.0.0.1:6379> STRLENdb

(integer) 8

127.0.0.1:6379>

到此,相信大家對(duì)“redis數(shù)據(jù)類(lèi)型strings的詳細(xì)介紹”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前標(biāo)題:redis數(shù)據(jù)類(lèi)型strings的詳細(xì)介紹-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/diiiee.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部