redis系列文章:
https://liudongdong.top/categories/redis
本篇來源:
https://liudongdong.top/archives/redissi-redis-zhi-string
公眾號:雨中散步撒哈拉
備注:歡迎關注公眾號,一起學習,共同進步!
一、基本語法
Redis 字符串(String)
Redis 字符串數(shù)據(jù)類型的相關命令用于管理 redis 字符串值,基本語法如下:
語法
redis 127.0.0.1:6379> COMMAND KEY_NAME
實例
127.0.0.1:6379> set learn_redis liudd
OK
127.0.0.1:6379> get learn_redis
"liudd"
127.0.0.1:6379>
適用場景:
- 計數(shù)器
- 統(tǒng)計多單位的數(shù)量
- 粉絲數(shù)
- 對象緩存存儲
二、命令劃分
個人覺得string類型,命令比較多些,便于個人理解和學習,進行了簡單分類!
分為以下幾類:
- 賦值命令
- 取值命令
- 特有命令
- 額外命令
- 對象格式操作
以上為個人理解,進行簡單劃分。具體對命令的理解,期待你的理解方法!
1. 賦值命令
- set:設置值
- setnx:如果值不存在則進行賦值
- mset:批量設值
- msetnx:批量設值,且key不存在
- getset:返回舊值,設值新值
2. 取值命令
- get:獲取key的值
- mget:批量獲取key的值
3. 特有命令
- exists:判斷key是否存在
- append:根據(jù)key進行追加
- strlen:獲取key的長度
- setrange:根據(jù)起終下標,進行設值(個人理解為字符串替換replace)
- getrange:根據(jù)起終下標,進行取值(個人理解為字符串截取substring)
4. 額外命令
- setex:設值key,并設置過期時間(單位:s/秒))
- psetex:設值key,并設置過期時間(單位:ms/毫秒))
- incr:int類型,進行key的自增(i++)
- decr:int類型,進行key的自減(i--)
- incrby:int類型,根據(jù)步長進行key的增加(i+n)
- decrby:int類型,根據(jù)步長進行key的增減(i-n)
- incrbyfloat:float類型,根據(jù)float值,進行增減(正負)
5. 對象格式操作
根據(jù)id和屬性進行對象的存取值
三、分類命令實踐
1. 賦值命令
# 查看當前庫所有key
127.0.0.1:6379> keys *
(empty list or set)
# 設值k1
127.0.0.1:6379> set k1 v1
OK
# 測試setnx對k1,如果k1存在是否存儲
127.0.0.1:6379> setnx k1 kk
(integer) 0
# 上步返回0,結果為存儲失敗,進行查看k1值
127.0.0.1:6379> get k1
"v1"
# k2不存在,進行存儲
127.0.0.1:6379> setnx k2 v2
(integer) 1
# 上步返回1,存儲成功,進行查看
127.0.0.1:6379> get k2
"v2"
# 批量設值
127.0.0.1:6379> mset k3 v3 k4 v4
OK
# 批量取值
127.0.0.1:6379> mget k3 k4
1) "v3"
2) "v4"
# 返回舊值,設值新值
127.0.0.1:6379> getset k4 v5
"v4"
# 查看結果
127.0.0.1:6379> get k4
"v5"
127.0.0.1:6379>
2. 取值命令
前一步,已經(jīng)根據(jù)設值進行了設值和取值,本步單獨進行取值
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k2 k3 k4
1) "v2"
2) "v3"
3) "v5"
127.0.0.1:6379>
3. 特有命令
# 查看當前庫,
127.0.0.1:6379> keys *
1) "k3"
2) "k1"
3) "k4"
4) "k2"
# 判斷是否存儲k4
127.0.0.1:6379> exists k4
(integer) 1
# 判斷是否存在k5
127.0.0.1:6379> exists k5
(integer) 0
# k4進行追加值
127.0.0.1:6379> append k4 aaa
(integer) 5
127.0.0.1:6379> get k4
"v5aaa"
# 獲取k4值得長度
127.0.0.1:6379> strlen k4
(integer) 5
# 根據(jù)起始下標進行替換k4,起始下標為1
127.0.0.1:6379> setrange k4 1 kk
(integer) 5
127.0.0.1:6379> get k4
"vkkaa"
# 截取獲取值,截取下標范圍[2,4]
127.0.0.1:6379> getrange k4 2 4
"kaa"
# 如果出現(xiàn)負值,則下標為從右向左,開始為-1
127.0.0.1:6379> getrange k4 0 -1
"vkkaa"
127.0.0.1:6379>
題外話:
getrange取值下標規(guī)則

image.png
4. 額外命令
# 設值過期時間為3秒
127.0.0.1:6379> setex k 3 kk
OK
127.0.0.1:6379> get k
"kk"
127.0.0.1:6379> get k
(nil)
# 設值過期時間為3000毫秒(3秒)
127.0.0.1:6379> psetex kk 3000 kk
OK
127.0.0.1:6379> get kk
"kk"
127.0.0.1:6379> get kk
(nil)
# 對i自增
127.0.0.1:6379> incr i
(integer) 1
127.0.0.1:6379> incr i
(integer) 2
127.0.0.1:6379> get i
"2"
# 對i自減
127.0.0.1:6379> decr i
(integer) 1
127.0.0.1:6379> decr i
(integer) 0
127.0.0.1:6379> get i
"0"
# 根據(jù)步長增加
127.0.0.1:6379> incrby i 3
(integer) 3
# 根據(jù)步長減少
127.0.0.1:6379> decrby i 4
(integer) -1
127.0.0.1:6379> get i
"-1"
# 對i進行float浮點數(shù)操作
127.0.0.1:6379> incrbyfloat i 2.1
"1.1"
127.0.0.1:6379> get i
"1.1"
127.0.0.1:6379>
5. 對象格式操作
對象命令格式 mset key:{id}:{屬性}
# id為1的user,進行設值
127.0.0.1:6379> mset user:1:name liudd user:1:age 2
OK
# 獲取user,id為1的值
127.0.0.1:6379> mget user:1:name user:1:age
1) "liudd"
2) "2"
# 設值id為2的user對象
127.0.0.1:6379> mset user:2:name liudd2 user:2:age 3
OK
127.0.0.1:6379> mget user:2:name user:2:age
1) "liudd2"
2) "3"
127.0.0.1:6379> keys *
1) "k1"
2) "user:2:name"
3) "k2"
4) "user:1:age"
5) "user:2:age"
6) "k3"
7) "user:1:name"
8) "k4"
9) "i"
127.0.0.1:6379>
附錄:命令列表
下表列出了常用的 redis 字符串命令:
| 序號 | 命令及描述 |
|---|---|
| 1 | SET key value 設置指定 key 的值 |
| 2 | GET key 獲取指定 key 的值。 |
| 3 | GETRANGE key start end 返回 key 中字符串值的子字符 |
| 4 | GETSET key value 將給定 key 的值設為 value ,并返回 key 的舊值(old value)。 |
| 5 | GETBIT key offset 對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。 |
| 6 | [MGET key1 key2..] 獲取所有(一個或多個)給定 key 的值。 |
| 7 | SETBIT key offset value 對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。 |
| 8 | SETEX key seconds value 將值 value 關聯(lián)到 key ,并將 key 的過期時間設為 seconds (以秒為單位)。 |
| 9 | SETNX key value 只有在 key 不存在時設置 key 的值。 |
| 10 | SETRANGE key offset value 用 value 參數(shù)覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始。 |
| 11 | STRLEN key 返回 key 所儲存的字符串值的長度。 |
| 12 | [MSET key value key value ...] 同時設置一個或多個 key-value 對。 |
| 13 | [MSETNX key value key value ...] 同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 |
| 14 | PSETEX key milliseconds value 這個命令和 SETEX 命令相似,但它以毫秒為單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。 |
| 15 | INCR key 將 key 中儲存的數(shù)字值增一。 |
| 16 | INCRBY key increment 將 key 所儲存的值加上給定的增量值(increment) 。 |
| 17 | INCRBYFLOAT key increment 將 key 所儲存的值加上給定的浮點增量值(increment) 。 |
| 18 | DECR key 將 key 中儲存的數(shù)字值減一。 |
| 19 | DECRBY key decrement key 所儲存的值減去給定的減量值(decrement) 。 |
| 20 | APPEND key value 如果 key 已經(jīng)存在并且是一個字符串, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾。 |
更多命令請參考:https://redis.io/commands