天天看點

Redis教程03(String介紹)Set指令Get指令StrLen指令AppendIncr指令IncrBy指令IncrByFloat指令DecrDecrByGetRangeSetRange指令GetSet指令MGet指令MSet指令SetEx指令PSetEx指令SetNx指令MSetNx指令

上篇文章中我們介紹了通用的相關指令,本文主要介紹String相關的指令

Redis教程03(String介紹)Set指令Get指令StrLen指令AppendIncr指令IncrBy指令IncrByFloat指令DecrDecrByGetRangeSetRange指令GetSet指令MGet指令MSet指令SetEx指令PSetEx指令SetNx指令MSetNx指令

Set指令

設定指定 key 的值

127.0.0.1:6379> set name abc
OK      

Get指令

傳回 key 的值,如果 key 不存在時,傳回 nil。 如果 key 不是字元串類型,那麼傳回一個錯誤。

127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> get aaa
(nil)      

StrLen指令

擷取value的長度

127.0.0.1:6379> strlen name
(integer) 10      

Append

如果 key 已經存在并且是一個字元串, APPEND 指令将指定的 value 追加到該 key 原來值(value)的末尾,如果key不存在則報錯

127.0.0.1:6379> append name 123
(integer) 6
127.0.0.1:6379> get name
"abc123"
127.0.0.1:6379> append aaa
(error) ERR wrong number of arguments for 'append' command      

Incr指令

将 key 中儲存的數字值增一。

如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCR 操作。

如果值包含錯誤的類型,或字元串類型的值不能表示為數字,那麼傳回一個錯誤

127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> incr age
(integer) 19 #正常數字增1
127.0.0.1:6379> incr aaa
(integer) 1  # 不存在 初始為0增1
127.0.0.1:6379> incr name # 類型不比對報錯
(error) ERR value is not an integer or out of range      

IncrBy指令

将 key 所儲存的值加上特定的值

127.0.0.1:6379> incrby age 5
(integer) 24
127.0.0.1:6379> incrby age 5
(integer) 29      

IncrByFloat指令

将 key 所儲存的值加上給定的浮點增量值

127.0.0.1:6379> incrbyfloat age 2.3
"31.3"
127.0.0.1:6379> incrbyfloat age 2.3
"33.6"      

Decr

将 key 中儲存的數字值減一。

如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECR 操作。

127.0.0.1:6379> get age
"18"
127.0.0.1:6379> decr age
(integer) 17      

DecrBy

将key中存儲的數字減固定的值

27.0.0.1:6379> decrby age 8
(integer) 9
127.0.0.1:6379> decrby age 8
(integer) 1      

GetRange

擷取value值的子集

指令 getrange key start end

127.0.0.1:6379> getrange name 2 5
"c123"
127.0.0.1:6379> getrange name 4 6
"23"
127.0.0.1:6379> getrange name 2 6
"c123"      

SetRange指令

用 value 參數覆寫給定 key 所儲存的字元串值,從偏移量 offset 開始

127.0.0.1:6379> set name helloworld
OK
127.0.0.1:6379> get name
"helloworld"
127.0.0.1:6379> setrange name 5 redis
(integer) 10
127.0.0.1:6379> get name
"helloredis"      

GetSet指令

擷取設定key的值并傳回原來的舊值

127.0.0.1:6379> getset name 波波烤鴨
"abc123"
127.0.0.1:6379> get name
"\xe6\xb3\xa2\xe6\xb3\xa2\xe7\x83\xa4\xe9\xb8\xad"      

MGet指令

批量擷取值

127.0.0.1:6379> mget name age address
1) "abc"
2) "1"
3) "sz"      

MSet指令

批量設定值

127.0.0.1:6379> mset a1 a1 a2 a2 a3 a3 a4 a4
OK
127.0.0.1:6379> mget a1 a2 a3 a4
1) "a1"
2) "a2"
3) "a3"
4) "a4"      

SetEx指令

設定key對應的value,同時設定過期時間,機關是秒

127.0.0.1:6379> setex name1 20 test
OK
127.0.0.1:6379> ttl name1
(integer) 16
127.0.0.1:6379> ttl name1
(integer) 6
127.0.0.1:6379> ttl name1
(integer) -2      

PSetEx指令

這個指令和 SETEX 指令相似,但它以毫秒為機關設定 key 的生存時間,而不是像 SETEX 指令那樣,以秒為機關

127.0.0.1:6379> psetex name2 20000 aaa
OK
127.0.0.1:6379> ttl name2
(integer) 17
127.0.0.1:6379> pttl name2
(integer) 4020
127.0.0.1:6379> pttl name2
(integer) 381      

SetNx指令

隻有在 key 不存在時設定 key 的值,set if not exists

127.0.0.1:6379> setnx name aaa
(integer) 0
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> setnx name3 aaa
(integer) 1
127.0.0.1:6379> get name3
"aaa"      

MSetNx指令

兼具了mset和setnx的特性,但是批量設定中隻要有一個key存在,則所有的操作都失效。

127.0.0.1:6379> msetnx b1 bb1 b2 bb2 b3 bb3
(integer) 1
127.0.0.1:6379> mget b1 b2 b3
1) "bb1"
2) "bb2"
3) "bb3"
127.0.0.1:6379> msetnx a1 aaa b5 bbb b6 bbb
(integer) 0
127.0.0.1:6379> mget a1 b5 b6
1) "a1"
2) (nil)
3) (nil)      

好了本文到此為止

繼續閱讀