蘭州做高端網(wǎng)站禁止搜索引擎收錄的方法
目錄
String字符串
常見命令
SET
GET
MGET
MSET
SETNX
計(jì)數(shù)命令?
INCR
INCRBY
DECR
DECRBY
INCRFLOAT
其它命令
?APPEND
GETRANGE
SETRANGE
STRLEN
String字符串
字符串是Redis最基礎(chǔ)的數(shù)據(jù)類型, 關(guān)于字符串需要特別注意: (1)首先Redis中所有的鍵的類型都是字符串類型, 而且其它幾種數(shù)據(jù)結(jié)構(gòu)也是在字符串類型的基礎(chǔ)上構(gòu)建的, 例如列表和集合的元素都是字符串類型, 所以字符串類型能為其它4種數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)奠定基礎(chǔ). (2)其次, 如圖, 字符串類型的值實(shí)際可以是字符串, 包含一般格式的字符串類似JSON, XML格式的字符串; 數(shù)字, 可以是整型或者浮點(diǎn)型; 甚至是二進(jìn)制數(shù)據(jù), 例如圖片, 音頻等. 不過一個(gè)字符串的最大值不能超過512MB.
由于Redis內(nèi)部存儲(chǔ)的字符串完全是按照二進(jìn)制流的形式保存的,? 所以Redis是不處理字符集編碼問題的, 客戶端傳入的命令中使用的是什么字符集編碼, 就存儲(chǔ)什么字符集編碼.
常見命令
SET
將string類型的value設(shè)置到key中. 如果key之前存在, 則覆蓋, 無論原來的數(shù)據(jù)類型是什么. 之前關(guān)于此key的TTL也全部失效.
語法:
SET key value [expiration EX seconds | PX milliseconds] [NX|XX]
命令有效版本: 1.0.0之后.? ? 時(shí)間復(fù)雜度:O(1)?
選項(xiàng):
EX seconds: 使用秒為單位設(shè)置key的過期時(shí)間.
PX milliseconds: 使用毫秒為單位設(shè)置key的過期時(shí)間.
NX: 只在key不存在時(shí)才進(jìn)行設(shè)置, 即如果key之前已經(jīng)存在, 設(shè)置不執(zhí)行.
XX: 旨在key存在時(shí)才進(jìn)行設(shè)置, 即如果key之前不存在, 設(shè)置不執(zhí)行.
注: 由于帶選項(xiàng)的SET命令可以被SETNX, SETEX, PSETEX等命令代替, 所以之后版本中, Redis可能進(jìn)行合并.
返回值:
如果設(shè)置成功, 則返回OK.
如果由于SET制定了NX或XX但條件不滿足, SET不會(huì)執(zhí)行, 并返回(nil).
示例:
GET
獲取key對(duì)應(yīng)的value. 如果key不存在, 返回nil. 如果value的數(shù)據(jù)類型不是string, 會(huì)報(bào)錯(cuò).
語法:
GET key?
命令有效版本: 1.0.0之后.? 時(shí)間復(fù)雜度: O(1).
返回值: key對(duì)應(yīng)的value, 或者nil當(dāng)key不存在.?
MGET
一次性獲取多個(gè)key的值. 如果對(duì)應(yīng)的key不存在或者對(duì)應(yīng)的數(shù)據(jù)類型不是string, 返回nil.
語法:
MGET key [key...]?
命令有效版本: 1.0.0之后. 時(shí)間復(fù)雜度: O(N) N是key的數(shù)量.
返回值: 對(duì)應(yīng)value的列表.
示例:
MSET
一次性設(shè)置多個(gè)key的值.
語法:
MSET key value [key value...]?
命令有效版本: 1.0.1之后.? 時(shí)間復(fù)雜度: O(N) N是key的數(shù)量.
返回值: 永遠(yuǎn)是OK.
SETNX
設(shè)置key-value但只允許在key之前不存在的情況下.
語法:
SETEX key value
命令有效版本: 1.0.0之后 時(shí)間復(fù)雜度: O(1)
返回值: 1表示設(shè)置成功. 0表示沒有設(shè)置.
示例:
計(jì)數(shù)命令?
INCR
將key對(duì)應(yīng)的string表示的數(shù)字加一. 如果key不存在, 則視為key對(duì)應(yīng)的value是0. 如果key對(duì)應(yīng)的string不是一個(gè)整型或者范圍超過了64位有符號(hào)整型, 則報(bào)錯(cuò).
語法:
INCR key
命令有效版本: 1.0.0之后? 時(shí)間復(fù)雜度:O(1)
返回值: integer類型的加完后的數(shù)值.
示例:
INCRBY
將key對(duì)應(yīng)的string表示的數(shù)字加上對(duì)應(yīng)的值.? 如果key不存在, 則視為key對(duì)應(yīng)的value是0. 如果key對(duì)應(yīng)的string不是一個(gè)整型或者范圍超過了64位有符號(hào)整型, 則報(bào)錯(cuò).
語法:
INCRBY key decrement
命令有效版本: 1.0.0之后. 時(shí)間復(fù)雜度: O(1)
返回值: integer類型加完后的數(shù)值.
示例:
DECR
將key對(duì)應(yīng)的string表示的數(shù)字-1. 如果key不存在, 則視為key對(duì)應(yīng)的value是0. 如果key對(duì)應(yīng)的string不是一個(gè)整型或者范圍超過了64位有符號(hào)整型, 則報(bào)錯(cuò).
語法:
DECR key?
命令有效版本: 1.0.0之后? 時(shí)間復(fù)雜度: O(1)
返回值: integer類型減完后的值.
DECRBY
將key對(duì)應(yīng)的string表示的數(shù)字減去對(duì)應(yīng)的值. 如果key不存在, 則視為key對(duì)應(yīng)的value是0. 如果key對(duì)應(yīng)的string不是一個(gè)整型或者范圍超過了64位有符號(hào)整型, 則報(bào)錯(cuò).
語法:
DECRBY key decrement
命令有效版本: 1.0.0之后. 時(shí)間復(fù)雜度: O(1)
返回值: integer類型減完后的數(shù)值.
INCRFLOAT
將key對(duì)應(yīng)的string表示的浮點(diǎn)數(shù)加上對(duì)應(yīng)的值.? 如果對(duì)應(yīng)的值是負(fù)數(shù), 則視為減去對(duì)應(yīng)的值(因此沒有DECRFLOAT). 如果key不存在, 則視為key對(duì)應(yīng)的value是0. 如果key對(duì)應(yīng)的不是string, 或者不是一個(gè)浮點(diǎn)數(shù), 則報(bào)錯(cuò). 允許采用科學(xué)計(jì)數(shù)法表示浮點(diǎn)數(shù).
語法:
INCRBYFLOAT key increment
命令有效版本: 2.6.0之后? ?時(shí)間復(fù)雜度: O(1)
返回值: 加/減完后的數(shù)值.
示例:
很多存儲(chǔ)系統(tǒng)和編程語言內(nèi)部使用CAS機(jī)制實(shí)現(xiàn)計(jì)數(shù)功能, 會(huì)有一定的CPU開銷, 但在Redis中完全不存在這個(gè)問題, 因?yàn)镽edis是單線程架構(gòu), 任何命令到了Redis服務(wù)端都要順序執(zhí)行.
其它命令
?APPEND
如果key已經(jīng)存在并且一個(gè)是string, 命令會(huì)將value追加到原有string的后面. 如果key不存在, 則效果等同于SET命令.
語法:
APPEND KEY VALUE
命令有效版本: 2.0.0之后.? 時(shí)間復(fù)雜度:O(1). 追加的字符串長(zhǎng)度比較短, 可以視為O(1).
返回值: 追加完成之后string的長(zhǎng)度.
示例:
GETRANGE
返回key對(duì)應(yīng)的string的字串, 由start和end確定(左閉右閉) . 可以使用負(fù)數(shù)表示倒數(shù). -1代表倒數(shù)第一個(gè)字符, -2表示倒數(shù)第二個(gè). 0是正數(shù)開始. 超過范圍的偏移量會(huì)根據(jù)string的長(zhǎng)度調(diào)整成正確的值.
語法:
GETRANGE key start end
命令有效版本: 2.4.0之后.? 時(shí)間復(fù)雜度: O(N) N為[start,end]長(zhǎng)度. 由于string通常較短, 可視為O(1)
返回值: string類型的字串.
SETRANGE
覆蓋字符串的一部分, 從指定的偏移開始.
語法:
? SETRANGE key offset value?
命令有效版本: 2.2.0之后. 時(shí)間復(fù)雜度: O(N), N為value的長(zhǎng)度. 由于value一般較短, 可視為O(1)
返回值: 替換后string的長(zhǎng)度.
示例:
STRLEN
獲取key對(duì)應(yīng)的string長(zhǎng)度. 當(dāng)key存放的類型不是string時(shí), 報(bào)錯(cuò).
語法:
STRLEN key?
命令有效版本: 2.2.0之后. 時(shí)間復(fù)雜度:O(1)
返回值: string的長(zhǎng)度. 或者當(dāng)key不存在時(shí), 返回0.