Redis String類型資料常用的16條命令總結
描述:String 類型是最簡單的類型,一個Key對應一個Value,String類型是二進位安全的。Redis的String可以包含任何資料,比如jpg圖片或序列化對象。 常用方法:
1, set方法:
set <key> <value> 設定key的值為value
(1)對不存在的key使用set:
redis 127.0.0.1:6379> set name 'zhangsan'OKredis 127.0.0.1:6379> get name"zhangsan"
(2)對已存在的key使用set,更換key的值:
redis 127.0.0.1:6379> set name 'lisi'OKredis 127.0.0.1:6379> get name"lisi"
2,setnx 方法:
setnx <key> <value> 當key不存在時,設定key的值為value,設定成功,返回1,設定失敗,返回0.
redis 127.0.0.1:6379> setnx name 'wangwu'(integer) 0redis 127.0.0.1:6379> get name"lisi"redis 127.0.0.1:6379> setnx name2 'wangwu'(integer) 1redis 127.0.0.1:6379> get name2"wangwu"
3,setex 方法:
setex <key> <seconds> <value> 設定key的值為value,到期時間為seconds(單位為秒).如果key已經存在,
則會覆蓋其值。到期之後,返回的是為nil.
redis 127.0.0.1:6379> setex name 3 'zhangsan'OKredis 127.0.0.1:6379> get name"zhangsan"redis 127.0.0.1:6379> get name(nil)redis 127.0.0.1:6379> setex name 30 'zhangsan'OKredis 127.0.0.1:6379> get name"zhangsan"redis 127.0.0.1:6379> setex name 30 'lisi'OKredis 127.0.0.1:6379> get name"lisi"
4,setrange方法:
setrange <key> <offset> <value> 用 value 參數覆蓋給定 key 所儲存的字串值,下標從0開始,位移量從 offset 開始。如果key不存在,則當做空白字串處理。此命令會確保字串足夠長以便將 value 設定在指定的位移量上,如果給定 key 原來儲存的字串長度比位移量小(比如字串只有 5 個字元長,但你設定的 offset 是 10 ),那麼原字元和位移量之間的空白將用零位元組(zerobytes, "\x00" )來填充。注意你能使用的最大位移量是 2^29-1(536870911) ,因為 Redis 字串的大小被限制在 512 兆(megabytes)以內。如果你需要使用比這更大的空間,你可以使用多個 key 。
redis 127.0.0.1:6379> set name 'zhangsan'OKredis 127.0.0.1:6379> get name"zhangsan"redis 127.0.0.1:6379> setrange name 5 '_si'(integer) 8redis 127.0.0.1:6379> get name"zhang_si"redis 127.0.0.1:6379> get name3(nil)redis 127.0.0.1:6379> setrange name3 4 'lisi'(integer) 8redis 127.0.0.1:6379> get name3"\x00\x00\x00\x00lisi"redis 127.0.0.1:6379>
5,mset方法:
mset <key> <value> [<key> <value> ...] 同時設定多個key-value對,如果key已經存在,則會覆蓋以前的值。
redis 127.0.0.1:6379> get name"zhang_si"redis 127.0.0.1:6379> mset name 'zhangsan' name2 'lisi' name3 'wangwu'OKredis 127.0.0.1:6379> get name"zhangsan"redis 127.0.0.1:6379> get name2"lisi"redis 127.0.0.1:6379> get name3"wangwu"redis 127.0.0.1:6379>
6,msetnx方法:
msetnx <key> <value> [<key> <value> ...] 類似與mset方法,同時設定多個key-value對,若且唯若所給定的key都不存在時。如果操作成功,返回1,失敗返回0.
redis 127.0.0.1:6379> set age 12OKredis 127.0.0.1:6379> get age"12"redis 127.0.0.1:6379> msetnx age 14 age1 34 age2 55(integer) 0redis 127.0.0.1:6379> get age1(nil)redis 127.0.0.1:6379> get age"12"redis 127.0.0.1:6379> msetnx key1 'hello' key2 'word'(integer) 1redis 127.0.0.1:6379> get key1"hello"redis 127.0.0.1:6379> get key2"word"redis 127.0.0.1:6379>
7,append方法:
append <key> <value> 將value追加到原來的key值之後,如果key本不存在,則預設建立一個key-value對。操作成功返回1,失敗返回0.
redis 127.0.0.1:6379> set name 'zhangshan'OKredis 127.0.0.1:6379> get name"zhangshan"redis 127.0.0.1:6379> append name ' is 12.'(integer) 16redis 127.0.0.1:6379> get name"zhangshan is 12."redis 127.0.0.1:6379> get addr(nil)redis 127.0.0.1:6379> append addr '32 env.'(integer) 7redis 127.0.0.1:6379> get addr"32 env."redis 127.0.0.1:6379>
8 ,get 方法:
get <key> 取出 key的值。
9, mget 方法:
mget <key> [<key>...] 取出多個key的值。如果給定的 key 裡面,有某個 key 不存在,那麼這個 key 返回特殊值 nil。
redis 127.0.0.1:6379> mget name name1 name2 name31) "zhangshan is 12."2) (nil)3) "lisi"4) "wangwu"redis 127.0.0.1:6379>
10, getrange 方法:
getrange <key> <start> <end> 擷取key對應值的子字串,從位移量start到end之間的串(包含start和end),value最左邊的一個字元的索引為0以此類推,最後一個字元的索引為字串的總長度減一,反過來類似。這與Python中的切片操作及其類似。如,字串"zhangsan"對應的正向下標如下圖中的下標一所示,反向下標如下圖中的下標二所示。
下標一: |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
z |
h |
a |
n |
g |
s |
a |
n |
下標二: |
0 |
-7 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
redis 127.0.0.1:6379> set name 'zhangsan'OKredis 127.0.0.1:6379> getrange name 0 4"zhang"redis 127.0.0.1:6379> getrange name 0 20"zhangsan"redis 127.0.0.1:6379> getrange name 0 -1"zhangsan"redis 127.0.0.1:6379>
11,getset方法:
getset <key> <value> 設定key的值為value,並返回key的舊值,當key的舊值不存在時,返回nil。
redis 127.0.0.1:6379> get name"zhangsan"redis 127.0.0.1:6379> getset name 'lisi'"zhangsan"redis 127.0.0.1:6379> get name"lisi"redis 127.0.0.1:6379> get code(nil)redis 127.0.0.1:6379> getset code 'hello'(nil)redis 127.0.0.1:6379> get code"hello"redis 127.0.0.1:6379>
12, strlen 方法:
strlen <key> 返回key的長度,如果key的值不存在時,返回0.
redis 127.0.0.1:6379> get name"lisi"redis 127.0.0.1:6379> strlen name(integer) 4redis 127.0.0.1:6379> get key0(nil)redis 127.0.0.1:6379> strlen key0(integer) 0
13,incr 方法:
incr <key> 將key的值加1。如果key的值不存在,則預設設定key的值為0,調用一次,增加一次,如果key的值不是整數類型,則返回一個錯誤。
redis 127.0.0.1:6379> get name"lisi"redis 127.0.0.1:6379> incr name(error) ERR value is not an integer or out of rangeredis 127.0.0.1:6379> set name 5OKredis 127.0.0.1:6379> incr name(integer) 6redis 127.0.0.1:6379> get name"6"redis 127.0.0.1:6379> get key0(nil)redis 127.0.0.1:6379> incr key0(integer) 1redis 127.0.0.1:6379> incr key0(integer) 2redis 127.0.0.1:6379> get key0"2"redis 127.0.0.1:6379>
14, decr 方法:
decr <key> 類似與incr方法,將key的值減1。如果key的值不存在,則預設設定key的值為0,調用一次,減一次,如果key的值不是整數類型,則返回一個錯誤。
redis 127.0.0.1:6379> get name"6"redis 127.0.0.1:6379> decr name(integer) 5redis 127.0.0.1:6379> decr name(integer) 4redis 127.0.0.1:6379> decr key9(integer) -1redis 127.0.0.1:6379>
15,incrby 方法:
incrby<key> <increment> 類似與decr方法,將key的值增加增量increment。同理,錯誤的類型任然返回錯誤。如果key值不存在,則預設為0後進行操作。
redis 127.0.0.1:6379> set count 20OKredis 127.0.0.1:6379> get count"20"redis 127.0.0.1:6379> incrby count 40(integer) 60redis 127.0.0.1:6379> get count"60"redis 127.0.0.1:6379> get count1(nil)redis 127.0.0.1:6379> incrby count1 30(integer) 30redis 127.0.0.1:6379> get count1"30"
16,decrby 方法:
decrby <key> <decrement> 類似與decr方法,將key的值減去增量decrement。同理,錯誤的類型任然返回錯誤。如果key值不存在,則預設為0後進行操作。
redis 127.0.0.1:6379> set count 20OKredis 127.0.0.1:6379> decrby count 4(integer) 16redis 127.0.0.1:6379> get count2(nil)redis 127.0.0.1:6379> decrby count2 10(integer) -10redis 127.0.0.1:6379>