前言
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
EX
與PX
參數都是設置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值,
start
、end
可以為負數,如果為負數則反向取區間
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
- "vakkevalue"
- (nil)
- "value1"
- (nil)
MSET
語法:MSET key1 value1 [key2 value2 key3 value3 ...]
所有參數為必選,key
、value
對至少為一對。該命令功能是設置多對key-value
值。
127.0.0.1:6379> MSET key1 v1 key2 v2 key3 v3
OK
127.0.0.1:6379> MGET key1 key2 key3
- "v1"
- "v2"
- "v3"
MSETNX
語法:MSETNX key1 value1 [key2 value2 key3 value3 ...] 所有參數為必選,key
、value
對至少為一對。該命令功能是設置多對key-value
值,如果key
存在,則不做任何操作。
127.0.0.1:6379> MGET key1 key2 key3
- "v1"
- (nil)
- "v3"
127.0.0.1:6379> MSETNX key1 v11 key2 v12 key3 v13
(integer) 0
127.0.0.1:6379> MGET key1 key2 key3- "v1"
- (nil)
- "v3"
127.0.0.1:6379> MSETNX key11 v11 key12 v12 key13 v13
(integer) 1
127.0.0.1:6379> MGET key11 key12 key13- "v11"
- "v12"
- "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
所有參數為必選參數,在指定key
的value
值后追加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的操作要求。工具已提供,怎么用就看個人能力了。