欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文搞懂Redis中String數(shù)據(jù)類型

 更新時(shí)間:2022年04月02日 14:37:55   作者:畢竟尹穩(wěn)健  
string 是 redis 最基本的類型,你可以理解成與 Memcached 一模一樣的類型,一個(gè) key 對(duì)應(yīng)一個(gè) value。今天通過本文給大家介紹下Redis中String數(shù)據(jù)類型,感興趣的朋友一起看看吧

概述:

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

相關(guān)命令列表:

命令原型時(shí)間復(fù)雜度命令描述返回值
APPENDO(1) 如果該Key已經(jīng)存在,APPEND命令將參數(shù)Value的數(shù)據(jù)追加到已存在Value的末尾。如果該Key不存在,APPEND命令將會(huì)創(chuàng)建一個(gè)新的Key/Value。追加后Value的長度。
DECRO(1)  

將指定Key的Value原子性的遞減1。如果該Key不存在,其初始值為0,在decr之后其值為-1。如果Value的值不能轉(zhuǎn)換為整型值,如Hello,該操作將執(zhí)行失敗

并返回相應(yīng)的錯(cuò)誤信息。注意:該操作的取值范圍是64位有符號(hào)整型。

遞減后的Value值。
INCRO(1)  

將指定Key的Value原子性的遞增1。如果該Key不存在,其初始值為0,在incr之后其值為1。如果Value的值不能轉(zhuǎn)換為整型值,如Hello,該操作將執(zhí)行失敗

并返回相應(yīng)的錯(cuò)誤信息。注意:該操作的取值范圍是64位有符號(hào)整型。 

遞增后的Value值。 
DECRBY O(1)

將指定Key的Value原子性的減少decrement。如果該Key不存在,其初始值為0,在decrby之后其值為-decrement。如果Value的值不能轉(zhuǎn)換為整型值,

如Hello,該操作將執(zhí)行失敗并返回相應(yīng)的錯(cuò)誤信息。注意:該操作的取值范圍是64位有符號(hào)整型。 

減少后的Value值。
INCRBYO(1) 

將指定Key的Value原子性的增加increment。如果該Key不存在,其初始值為0,在incrby之后其值為increment。如果Value的值不能轉(zhuǎn)換為整型值,如Hello,

該操作將執(zhí)行失敗并返回相應(yīng)的錯(cuò)誤信息。注意:該操作的取值范圍是64位有符號(hào)整型。 

增加后的Value值。
GETO(1)獲取指定Key的Value。如果與該Key關(guān)聯(lián)的Value不是string類型,Redis將返回錯(cuò)誤信息,因?yàn)镚ET命令只能用于獲取string Value。 與該Key相關(guān)的Value,如果該Key不存在,返回nil。
SETO(1)設(shè)定該Key持有指定的字符串Value,如果該Key已經(jīng)存在,則覆蓋其原有值。總是返回"OK"。
GETSETO(1)原子性的設(shè)置該Key為指定的Value,同時(shí)返回該Key的原有值。和GET命令一樣,該命令也只能處理string Value,否則Redis將給出相關(guān)的錯(cuò)誤信息。返回該Key的原有值,如果該Key之前并不存在,則返回nil。
STRLENO(1)返回指定Key的字符值長度,如果Value不是string類型,Redis將執(zhí)行失敗并給出相關(guān)的錯(cuò)誤信息。返回指定Key的Value字符長度,如果該Key不存在,返回0。
SETEXO(1)原子性完成兩個(gè)操作,一是設(shè)置該Key的值為指定字符串,同時(shí)設(shè)置該Key在Redis服務(wù)器中的存活時(shí)間(秒數(shù))。該命令主要應(yīng)用于Redis被當(dāng)做Cache服務(wù)器使用時(shí)。 
SETNXO(1)如果指定的Key不存在,則設(shè)定該Key持有指定字符串Value,此時(shí)其效果等價(jià)于SET命令。相反,如果該Key已經(jīng)存在,該命令將不做任何操作并返回。1表示設(shè)置成功,否則0。
SETRANGE  O(1)

替換指定Key的部分字符串值。從offset開始,替換的長度為該命令第三個(gè)參數(shù)value的字符串長度,其中如果offset的值大于該Key的原有值Value的字符串長度,

Redis將會(huì)在Value的后面補(bǔ)齊(offset - strlen(value))數(shù)量的0x00,之后再追加新值。如果該鍵不存在,該命令會(huì)將其原值的長度假設(shè)為0,并在其后添補(bǔ)offset個(gè)

0x00后再追加新值。鑒于字符串Value的最大長度為512M,因此offset的最大值為536870911。最后需要注意的是,如果該命令在執(zhí)行時(shí)致使指定Key的原有值

長度增加,這將會(huì)導(dǎo)致Redis重新分配足夠的內(nèi)存以容納替換后的全部字符串,因此就會(huì)帶來一定的性能折損。 

修改后的字符串Value長度。
GETRANGEO(1)

如果截取的字符串長度很短,我們可以該命令的時(shí)間復(fù)雜度視為O(1),否則就是O(N),這里N表示截取的子字符串長度。該命令在截取子字符串時(shí),將以閉區(qū)間的方

式同時(shí)包含start(0表示第一個(gè)字符)和end所在的字符,如果end值超過Value的字符長度,該命令將只是截取從start開始之后所有的字符數(shù)據(jù)。

子字符串 
SETBITO(1)

設(shè)置在指定Offset上BIT的值,該值只能為1或0,在設(shè)定后該命令返回該Offset上原有的BIT值。如果指定Key不存在,該命令將創(chuàng)建一個(gè)新值,并在指定

的Offset上設(shè)定參數(shù)中的BIT值。如果Offset大于Value的字符長度,Redis將拉長Value值并在指定Offset上設(shè)置參數(shù)中的BIT值,中間添加的BIT值為0。最后需要

說明的是Offset值必須大于0。 

在指定Offset上的BIT原有值。
GETBITO(1)返回在指定Offset上BIT的值,0或1。如果Offset超過string value的長度,該命令將返回0,所以對(duì)于空字符串始終返回0。在指定Offset上的BIT值。 
MGETO(N)N表示獲取Key的數(shù)量。返回所有指定Keys的Values,如果其中某個(gè)Key不存在,或者其值不為string類型,該Key的Value將返回nil。返回一組指定Keys的Values的列表。
MSETO(N)N表示指定Key的數(shù)量。該命令原子性的完成參數(shù)中所有key/value的設(shè)置操作,其具體行為可以看成是多次迭代執(zhí)行SET命令。 該命令不會(huì)失敗,始終返回OK。  
MSETNXO(N)

N表示指定Key的數(shù)量。該命令原子性的完成參數(shù)中所有key/value的設(shè)置操作,其具體行為可以看成是多次迭代執(zhí)行SETNX命令。然而這里需要明確說明的是,

如果在這一批Keys中有任意一個(gè)Key已經(jīng)存在了,那么該操作將全部回滾,即所有的修改都不會(huì)生效。

String(字符串)

append key value 在原有的value上添加值,如果key原先不存在就新建一個(gè)key和value不是追加

substr key start len 截取key,從start開始,截取len的長度

strlen key 獲取key的長度

incr key 自增1

decr key 自減1

incrby key num 增加key ,增加num

decrby key num 減少key,減少num

getrange key start end 截取字符key [start,end] 包頭也包尾

setrange key offset value 替換offset位置的數(shù)據(jù)改成value (offset是key的索引)

setex key seconds value 設(shè)置key的過期時(shí)間

setnx key value 不存在設(shè)置key、value 如果key存在再次添加value會(huì)失敗

mset key1 value key2 value 一次性設(shè)置多個(gè)key、value

mget key1 key2 一次性獲取多個(gè)key的value

msetnx key1 value key2 value 一次性設(shè)置多個(gè)key、value 如果其中一個(gè)key存在則全部創(chuàng)建失?。ㄔ有裕?/p>

getset key value 如果不存在獲取nil,然后設(shè)置值,如果指存在獲取之前的值,在設(shè)置后面的value(更新的操作)

###############################################
127.0.0.1:6379> set key1 v
OK
127.0.0.1:6379> get key1
"v"
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> exists key1
(integer) 1
127.0.0.1:6379> append key1 v1
(integer) 3
127.0.0.1:6379> get key1
"vv1"
127.0.0.1:6379> substr key1 0 3
"vv1"
127.0.0.1:6379> strlen key1
(integer) 3
127.0.0.1:6379> append key1 "hello1"
(integer) 9
127.0.0.1:6379> substr key1 1 2
"v1"
127.0.0.1:6379> substr key1 1 1
"v"
127.0.0.1:6379> append key2 "lisi"
(integer) 4
127.0.0.1:6379> get key2
"lisi"
###############################################
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> incrby views 10
(integer) 10
127.0.0.1:6379> decrby views 5
(integer) 5
####################################
127.0.0.1:6379> set key1 "hello,world"
OK
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1
"hello,world"
127.0.0.1:6379> SETRANGE key2 3 2
(integer) 7
127.0.0.1:6379> get key2
"abc2efg"
########################################
127.0.0.1:6379> setex key3 30 hello
OK
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> ttl key3
(integer) 24
127.0.0.1:6379> SETNX mykey redis
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
2) "key2"
3) "key1"
127.0.0.1:6379> SETNX mykey "MongoDB"
(integer) 0
127.0.0.1:6379> get mykey
"redis"
####################################
127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> MSETNX k1 v1 k3 v3
(integer) 0
# 對(duì)象
# 這里的key是一個(gè)巧妙的設(shè)計(jì) user:{id}:{filed} 
127.0.0.1:6379> msetnx user:1:name "zhangsan" user:1:age 2
(integer) 1
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
127.0.0.1:6379> set article:101:views 0
OK
127.0.0.1:6379> incr article:101:views
(integer) 1
127.0.0.1:6379> get article:101:views
"1"
###########################################################
127.0.0.1:6379> getset db redis
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db 10
"redis"

String類似的場景:value除了是我們的字符串還可以是我們的數(shù)字!

  • 計(jì)數(shù)器
  • 統(tǒng)計(jì)多單位的數(shù)量 uid:1923:follow 0
  • 粉絲數(shù)
  • 對(duì)象緩存存儲(chǔ)

到此這篇關(guān)于Redis中String數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)Redis String數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Redission的分布式鎖實(shí)戰(zhàn)

    基于Redission的分布式鎖實(shí)戰(zhàn)

    本文主要介紹了基于Redission的分布式鎖實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis 的各項(xiàng)功能主要解決了什么問題

    Redis 的各項(xiàng)功能主要解決了什么問題

    Redis是一個(gè)基于BSD開源的項(xiàng)目,是一個(gè)把結(jié)構(gòu)化的數(shù)據(jù)放在內(nèi)存中的一個(gè)存儲(chǔ)系統(tǒng),你可以把它作為數(shù)據(jù)庫,緩存和消息中間件來使用。這篇文章主要介紹了Redis 的各項(xiàng)功能主要解決了什么問題,需要的朋友可以參考下
    2018-10-10
  • Redis不同數(shù)據(jù)類型使用場景代碼實(shí)例

    Redis不同數(shù)據(jù)類型使用場景代碼實(shí)例

    這篇文章主要介紹了Redis不同數(shù)據(jù)類型使用場景代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Redis 中spark參數(shù)executor-cores引起的異常解決辦法

    Redis 中spark參數(shù)executor-cores引起的異常解決辦法

    這篇文章主要介紹了Redis 中spark參數(shù)executor-cores引起的異常解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 深入淺析Redis 集群伸縮原理

    深入淺析Redis 集群伸縮原理

    Redis 集群提供了靈活的節(jié)點(diǎn)擴(kuò)容和收縮方案。在不影響集群對(duì)外服務(wù)的情況下,可以為集群添加節(jié)點(diǎn)進(jìn)行擴(kuò)容,也可以下線部分節(jié)點(diǎn)進(jìn)行縮容,接下來通過本文給大家分享Redis 集群伸縮原理,感興趣的朋友一起看看吧
    2021-05-05
  • Redis基本數(shù)據(jù)類型List常用操作命令

    Redis基本數(shù)據(jù)類型List常用操作命令

    這篇文章主要為大家介紹了Redis數(shù)據(jù)類型List常用命令操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • redisson滑動(dòng)時(shí)間窗應(yīng)用場景解決方案

    redisson滑動(dòng)時(shí)間窗應(yīng)用場景解決方案

    前10分鐘內(nèi)累計(jì)3次驗(yàn)證失敗后,增加圖形驗(yàn)證碼驗(yàn)證條件,前10分鐘內(nèi)累計(jì)6次驗(yàn)證失敗后,系統(tǒng)自動(dòng)鎖定該賬號(hào)15分鐘,15分鐘后自動(dòng)解鎖,本文給大家分享redisson滑動(dòng)時(shí)間窗應(yīng)用場景解決方案,感興趣的朋友一起看看吧
    2024-01-01
  • 推薦幾款 Redis 可視化工具(太厲害了)

    推薦幾款 Redis 可視化工具(太厲害了)

    這篇文章主要介紹了推薦幾款 Redis 可視化工具,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-04-04
  • redis+mysql+quartz 一種紅包發(fā)送功能的實(shí)現(xiàn)

    redis+mysql+quartz 一種紅包發(fā)送功能的實(shí)現(xiàn)

    這篇文章主要介紹了redis+mysql+quartz 一種紅包發(fā)送功能的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Redis處理高并發(fā)之布隆過濾器詳解

    Redis處理高并發(fā)之布隆過濾器詳解

    這篇文章主要為大家介紹了Redis處理高并發(fā)之布隆過濾器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論