Redis數(shù)據(jù)結(jié)構(gòu) - string字符串

string類型介紹
與大多編程語言中的字符串類型一樣,Redis的字符串也是字符序列,它是Redis中最為基礎(chǔ)的數(shù)據(jù)存儲類型,具有以下特點:
字符串類型是Redis中二進(jìn)制安全的,這就意味著它們都有一個已知的長度,可以接受任何格式的數(shù)據(jù)(如信息交換中常用的Json格式字符串,甚至圖像數(shù)據(jù))。
Redis中字符串類型最多可以容納的數(shù)據(jù)長度可達(dá)512M。

string類型相關(guān)命令
Redis字符串命令主要用于管理字符串值,主要包括以下命令:
1、 set命令
set命令用于設(shè)置指定鍵的值,具體格式為:
set key value [ex 秒數(shù)] [px 毫秒數(shù)] [nx/xx]

各個選項的含義如下:
ex:設(shè)置指定的到期時間,單位為秒
px:設(shè)置指定的到期時間,單位為毫秒,如果ex和px同時寫,則以后面的有效期為準(zhǔn)
nx:如果對應(yīng)key不存在則創(chuàng)建
xx:如果對應(yīng)key存在則修改其值

示例1:

127.0.0.1:6379> set mykey "this is redis"
OK

在示例1中,用set命令來設(shè)置key、value,操作成功后終端打印出“OK”。
2、get命令
get命令用來獲取指定鍵的值,如果鍵不存在,則返回nil,如果返回值不是字符串,則返回錯誤。具體格式為:
get key

示例2:

127.0.0.1:6379> get mykey"this is redis"
127.0.0.1:6379> get yourkey(nil)

3、mset命令
mset命令用于一次性設(shè)置多個鍵和值,和set命令一樣操作成功后返回字符串“OK”。具體格式為:
mset key1 value1 key2 value2 ...

示例3:

127.0.0.1:6379> mset key1 "this is key1" key2 "this is key2"
OK
127.0.0.1:6379> get key1
"this is key1"
127.0.0.1:6379> get key2
"this is key2"

4、mget命令
mget命令用于返回所有給定鍵的值。對于某個不存在值的鍵或者不存在的鍵,返回nil,否則返回指定鍵的值列表。具體格式為:
mget key1 key2 ...

示例4:

127.0.0.1:6379> set key1 "hello"
OK
127.0.0.1:6379> set key2 "world"
OK
127.0.0.1:6379> mget key1 key2 key3
1) "hello"
2) "world"
3) (nil)

5、setrange命令
setrange命令將字符串中偏移量為offset后的子串覆蓋為指定的值,該命令返回修改后的字符串的長度。具體格式為:
setrange key offset value

如果偏移量offset > 原字符串長度,不足部分用0x00補全。
示例5:

127.0.0.1:6379> set key1 "Hello World"
OK
127.0.0.1:6379> setrange key1 6 "Redis"
(integer) 11
127.0.0.1:6379> get key1
"Hello Redis"
127.0.0.1:6379> setrange key1 15 "Hei"
(integer) 18
127.0.0.1:6379> get key1
"Hello Redis\x00\x00\x00\x00Hei"

6、setex命令
setex命令用來設(shè)置指定鍵的值,并指定該鍵值對應(yīng)的存在時間(單位:秒)。具體格式如下:
setex key seconds value

示例6:

127.0.0.1:6379> setex key1 5 "hello"  // 5s的過期時間
OK
127.0.0.1:6379> get key1    // 馬上訪問
"hello"
127.0.0.1:6379> get key1    // 5s后訪問
(nil)

7、setnx命令
setnx命令也可以用來設(shè)置指定鍵的字符串值,但該命令在設(shè)置前需要檢查指定鍵是否已經(jīng)存在。如果存在,則該命令的作用和set命令一樣,操作完成后返回1,否則不重新設(shè)置已經(jīng)存在的鍵的字符串值,直接返回0。具體格式如下:
setnx key value

示例7:

127.0.0.1:6379> setnx key1 "Hello"
(integer) 1
127.0.0.1:6379> setnx key1 "World"
(integer) 0
127.0.0.1:6379> get key1
"Hello"

8、append命令
故名思議,append命令將字符串追加到指定鍵的原值上,返回值為新字符串的長度。具體格式為:
append key value

示例8:

127.0.0.1:6379> set key1 "Hello "
OK
127.0.0.1:6379> append key1 "World"
(integer) 11
127.0.0.1:6379> get key1
"Hello World"

9、getrange命令
getrange命令獲取字符串指定范圍的子串,具體格式為:
getrange key start stop

getrange命令返回字符串中下標(biāo)范圍為[start,stop]范圍的值。類似python,該命令下標(biāo)支持負(fù)偏移量,右邊第一個下標(biāo)為-1。假設(shè)字符串的長度為length,getrange根據(jù)以下原則決定返回值:
當(dāng)start > length,則返回空字符串
當(dāng)stop >= length,則截取至字符串尾
如果start > stop,則返回空字符串
如果0 <= start <= stop < length,返回指定范圍的子串

示例9:

127.0.0.1:6379> set key1 "This is getrange testing"
OK
127.0.0.1:6379> getrange key1 5 6
"is"
127.0.0.1:6379> getrange key1 100 200
""
127.0.0.1:6379> getrange key1 5 100
"is getrange testing"

10、incr命令
incr命令用于自增一個指定鍵對應(yīng)的整數(shù)值并返回新的值。如果該鍵不存在,則創(chuàng)建該鍵,對應(yīng)的value被置為0然后執(zhí)行自增操作,如果該鍵對應(yīng)的值不能轉(zhuǎn)換為整數(shù),則返回錯誤。
具體格式為:
incr key

示例8:

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incr key1
(integer) 11
127.0.0.1:6379> incr key2
(integer) 1
127.0.0.1:6379> set key2 "non"
OK
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379>

10、incrby命令
該命令與incr命令相似,不同的是:incrby命令可以自定義自增值,這也是命令中“by”的含義。具體格式為:
incrby key k

示例9:

127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incrby key1 5
(integer) 15
127.0.0.1:6379> get key1
"15"

11、incrbyfloat命令
從字面上我們就可以看出incrbyfloat是和incrby相似的命令,不同的是:incrbyfloat對指定鍵的值自增一個浮點數(shù)。該命令返回修改后的新值。具體格式為:
incrbyfloat by f

示例10:

127.0.0.1:6379> set key1 100
OK
127.0.0.1:6379> incrbyfloat key1 0.5
"100.5"

12、decr和decrby命令
decr命令和incr命令作用相反,具體格式如下:
decr key

decrby命令和incrby命令作用相反,具體格式如下:
decrby key decrement

13、strlen命令
strlen命令返回指定鍵的字符串值的長度。具體格式為:
strlen key

示例13:

127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11

14、setbit命令
setbit命令用來設(shè)置指定鍵的字符串在offset偏移量上對應(yīng)二進(jìn)制位上的值,并返回該為上的舊值。由于該命令操作的是二進(jìn)制位,所以設(shè)置的新值只能為0或1。如果指定key不存在,則創(chuàng)建一個新值并在指定的offset上設(shè)置二進(jìn)制值。如果offset大于字符串的長度,不足部分用0填充后在指定offset上設(shè)置二進(jìn)制值。具體格式如下:
setbit key offset value

示例14:

127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11

15、getbit命令
與setbit命令相對應(yīng),getbit命令用于返回指定偏移量offset上二進(jìn)制位的值。如果offset大于value的長度,或者指定key不存在,則返回0。具體格式如下:
getbit key offset

示例15:

127.0.0.1:6379> setbit key1 7 1
(integer) 1
127.0.0.1:6379> getbit key1 7
(integer) 1
127.0.0.1:6379> getbit key1 100
(integer) 0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評論 19 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,207評論 2 33
  • 1.概述: 字符串類型是Redis中最為基礎(chǔ)的數(shù)據(jù)存儲類型,它在Redis中是二進(jìn)制安全的,這便意味著該類型可以接...
    六月星空2011閱讀 586評論 0 0
  • 書摘 閱讀心得 覺得作者的觀點有一定的主觀色彩,不可盡信。這兩段是我比較認(rèn)同的,也終于理解童年時代,少年時代的我們...
    金黃的麥穗閱讀 197評論 0 0
  • 你是否被人問過這樣一個經(jīng)典的面試問題,“五年內(nèi)你對自己有什么規(guī)劃?”當(dāng)被問到時,我的腦子里總會回放一段1984年《...
    任家輝閱讀 914評論 2 4

友情鏈接更多精彩內(nèi)容