redis系列文章:
https://liudongdong.top/categories/redis
本篇來源:
https://liudongdong.top/archives/redissi-redis-zhi-string
公眾號:雨中散步撒哈拉
備注:歡迎關注公眾號肆糕,一起學習巢墅,共同進步侦铜!
一院塞、基本語法
Redis 字符串(String)
Redis 字符串數據類型的相關命令用于管理 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>
適用場景:
- 計數器
- 統(tǒng)計多單位的數量
- 粉絲數
- 對象緩存存儲
二戏溺、命令劃分
個人覺得string類型渣蜗,命令比較多些,便于個人理解和學習旷祸,進行了簡單分類耕拷!
分為以下幾類:
- 賦值命令
- 取值命令
- 特有命令
- 額外命令
- 對象格式操作
以上為個人理解,進行簡單劃分托享。具體對命令的理解斑胜,期待你的理解方法!
1. 賦值命令
- set:設置值
- setnx:如果值不存在則進行賦值
- mset:批量設值
- msetnx:批量設值嫌吠,且key不存在
- getset:返回舊值止潘,設值新值
2. 取值命令
- get:獲取key的值
- mget:批量獲取key的值
3. 特有命令
- exists:判斷key是否存在
- append:根據key進行追加
- strlen:獲取key的長度
- setrange:根據起終下標,進行設值(個人理解為字符串替換replace)
- getrange:根據起終下標辫诅,進行取值(個人理解為字符串截取substring)
4. 額外命令
- setex:設值key凭戴,并設置過期時間(單位:s/秒))
- psetex:設值key,并設置過期時間(單位:ms/毫秒))
- incr:int類型炕矮,進行key的自增(i++)
- decr:int類型么夫,進行key的自減(i--)
- incrby:int類型者冤,根據步長進行key的增加(i+n)
- decrby:int類型,根據步長進行key的增減(i-n)
- incrbyfloat:float類型档痪,根據float值涉枫,進行增減(正負)
5. 對象格式操作
根據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. 取值命令
前一步吗跋,已經根據設值進行了設值和取值,本步單獨進行取值
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
# 根據起始下標進行替換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"
# 根據步長增加
127.0.0.1:6379> incrby i 3
(integer) 3
# 根據步長減少
127.0.0.1:6379> decrby i 4
(integer) -1
127.0.0.1:6379> get i
"-1"
# 對i進行float浮點數操作
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 參數覆寫給定 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 中儲存的數字值增一岁经。 |
16 | INCRBY key increment 將 key 所儲存的值加上給定的增量值(increment) 。 |
17 | INCRBYFLOAT key increment 將 key 所儲存的值加上給定的浮點增量值(increment) 蛇券。 |
18 | DECR key 將 key 中儲存的數字值減一缀壤。 |
19 | DECRBY key decrement key 所儲存的值減去給定的減量值(decrement) 。 |
20 | APPEND key value 如果 key 已經存在并且是一個字符串怀读, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾诉位。 |
更多命令請參考:https://redis.io/commands