Redis之String操作命令

前言

Redis作為cache服務器,支持多種數據結構,String、List、Hash、Set、Zset。多種數據結構的存在,使得Redis適用于多種業務,Redis的適用也越發廣泛,本文就介紹Redis中最簡單的數據結構String的操作命令。


簡介

String類似memcache的結構,即最簡單的 key-value 結構,一個Key對應一個簡單的value,簡單明了.

命令簡介


SET

語法: SET key value [NX] [XX] [EX <seconds>] [PX [millseconds]] 設置一對key value
必選參數說明
SET:命令
key:待設置的key
value: 設置的key的value
可選參數說明
NX:表示key不存在才設置,如果存在則返回NULL
XX:表示key存在時才設置,如果不存在則返回NULL
EX seconds:設置過期時間,過期時間精確為秒
PX millsecond:設置過期時間,過期時間精確為毫秒

設置一對 key value 不帶任何可選參數
SET key value

127.0.0.1:6379> SET key value
OK
成功

設置一對 key(已存在) value,帶可選參數 NX

127.0.0.1:6379> SET key value NX
(nil)
key 已經存在,所以設置失敗,返回 nil

設置一對 key(不存在) value,帶可選參數 NX

127.0.0.1:6379> SET key1 value1 NX
OK
key1不存在,所以設置成功,返回 OK

設置一對 key(不存在) value,帶可選參數 XX

127.0.0.1:6379> SET key3 value3 XX
(nil)
key3 不存在,所以設置失敗

設置一對 key(存在) value,帶可選參數 XX

127.0.0.1:6379> SET key value3 XX
OK
key存在,所以設置成功

設置一對 key(存在) value,帶可選參數 EX

127.0.0.1:6379> SET key value EX 10086
OK
127.0.0.1:6379> ttl key
(integer) 10084

設置一對 key(存在) value,帶可選參數 PX

127.0.0.1:6379> SET key value PX 10086000
OK
127.0.0.1:6379> ttl key
(integer) 10085

EXPX參數都是設置key的過期時間,差異為一個單位為一個單位為毫秒


SETNX

語法:SETNX key value
所有參數為必選參數,設置一對key value,如果key存在,則設置失敗,等同于 SET key value NX

127.0.0.1:6379> SETNX key value
(integer) 0
key已經存在,設置失敗


SETEX

語法:SETEX key expire value
所有參數為必選參數,設置一對 key value,并設過期時間,單位為秒,等同于 SET key value EX expire

127.0.0.1:6379> SETEX key 10086 value
OK
127.0.0.1:6379> ttl key
(integer) 10084


PSETEX

語法:PSETEX key expire value
所有參數為必選參數,設置一對 key value,并設過期時間,單位為毫秒,等同于 SET key value PX expire

127.0.0.1:6379> PSETEX key 10086000 value
OK
127.0.0.1:6379> ttl key
(integer) 10084


GET

語法: GET key
所有參數為必選參數,獲取指定key的value,成功返回對應的 value,失敗返回 NULL

127.0.0.1:6379> GET key
"value"
127.0.0.1:6379> GET Keykk
(nil)


GETSET

語法:GETSET key value
所有參數為必選參數,獲取指定key的value,并設置key的值為新值value

127.0.0.1:6379> GETSET key valuevalue
"value"
127.0.0.1:6379> GET key
"valuevalue"


SETRANGE

語法:SETRANGE key offset value
所有參數為必選參數,設置指定key,偏移量offset后的值為value,影響范圍為value的長度, offset不能小于0

127.0.0.1:6379> GET key
"valuevalue"
127.0.0.1:6379> SETRANGE key 2 kk
(integer) 10
127.0.0.1:6379> GET key
"vakkevalue"


GETRANGE

語法:GETRANGE key start end
所有參數為必選參數,獲取指定key指定區間的value值,
startend可以為負數,如果為負數則反向取區間

127.0.0.1:6379> GET key
"vakkevalue"
127.0.0.1:6379> GETRANGE key 2 5
"kkev"
127.0.0.1:6379> GETRANGE key -5 -2
"valu"


MGET

語法:MGET key1 [key2 key3 ...]
所有參數為必選,key值至少為一個,獲取多個key的value值,key值存的返回對應的value,不存在的返回NULL

127.0.0.1:6379> MGET key keykey key1 key1234

  1. "vakkevalue"
  2. (nil)
  3. "value1"
  4. (nil)

MSET

語法:MSET key1 value1 [key2 value2 key3 value3 ...]
所有參數為必選,keyvalue對至少為一對。該命令功能是設置多對key-value值。

127.0.0.1:6379> MSET key1 v1 key2 v2 key3 v3
OK
127.0.0.1:6379> MGET key1 key2 key3

  1. "v1"
  2. "v2"
  3. "v3"

MSETNX

語法:MSETNX key1 value1 [key2 value2 key3 value3 ...] 所有參數為必選,keyvalue對至少為一對。該命令功能是設置多對key-value值,如果key存在,則不做任何操作。

127.0.0.1:6379> MGET key1 key2 key3

  1. "v1"
  2. (nil)
  3. "v3"
    127.0.0.1:6379> MSETNX key1 v11 key2 v12 key3 v13
    (integer) 0
    127.0.0.1:6379> MGET key1 key2 key3
  4. "v1"
  5. (nil)
  6. "v3"
    127.0.0.1:6379> MSETNX key11 v11 key12 v12 key13 v13
    (integer) 1
    127.0.0.1:6379> MGET key11 key12 key13
  7. "v11"
  8. "v12"
  9. "v13"

INCR

語法: INCR key
所有參數為必選,指定key做加1操作。指定key對應的值必須為整型,否則返回錯誤,操作成功后返回操作后的值

127.0.0.1:6379> GET key
"vakkevalue"
127.0.0.1:6379> INCR key
(error) ERR value is not an integer or out of range
127.0.0.1:6379> SET key 100
OK
127.0.0.1:6379> INCR key
(integer) 101


DECR

語法: DECR key
所有參數為必選,指定key做減1操作。指定key對應的值必須為整型,否則返回錯誤,操作成功后返回操作后的值。為DECR的逆操作。

127.0.0.1:6379> DECR key
(integer) 100


INCRBY

語法:INCRBY key data
所有參數為必選參數,指定key做加data操作,指定key對應的值和data必須為整型,否則返回錯誤,操作成功后返回操作后的值

27.0.0.1:6379> INCRBY key djfklaj
(error) ERR value is not an integer or out of range
127.0.0.1:6379> INCRBY key 20
(integer) 120


DECRBY

語法:DECRBY key data
所有參數為必選參數,指定key做減data操作,指定key對應的值和data必須為整型,否則返回錯誤,操作成功后返回操作后的值

127.0.0.1:6379> DECRBY key 10
(integer) 110


INCRBYFLOAT

語法:INCRBYFLOAT key data
所有參數為必選參數,對指定key做加data操作,data為浮點型數據,key對應的value也必須為數值類型,否則返回錯誤。操作成功后返回操作后的數值

127.0.0.1:6379> GET key
"22.22"
127.0.0.1:6379> INCRBYFLOAT key 1.1
"23.32"
127.0.0.1:6379> GET nonumber
"kdjfl"
127.0.0.1:6379> INCRBYFLOAT nonumber 1.1
(error) ERR value is not a valid float


APPEND

語法:APPEN key appendvalue
所有參數為必選參數,在指定keyvalue值后追加appendvalue,操作成功后返回新值得長度,如果key對應的value不存在,則以appendvalue創建一個新值

127.0.0.1:6379> GET key
"test"
127.0.0.1:6379> APPEND key append
(integer) 10
127.0.0.1:6379> GET key
"testappend"
127.0.0.1:6379> GET append
(nil)
127.0.0.1:6379> APPEND append append
(integer) 6
127.0.0.1:6379> GET append
"append"


總結

Redis String 數據結構看之簡單,實則大有乾坤,有待探尋。String類型提供了豐富的操作命令,可以滿足大部分針對String的操作要求。工具已提供,怎么用就看個人能力了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內容