redis | 四、redis之String

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> 

適用場景:

  1. 計數(shù)器
  2. 統(tǒng)計多單位的數(shù)量
  3. 粉絲數(shù)
  4. 對象緩存存儲

二、命令劃分

個人覺得string類型,命令比較多些,便于個人理解和學習,進行了簡單分類!
分為以下幾類:

  1. 賦值命令
  2. 取值命令
  3. 特有命令
  4. 額外命令
  5. 對象格式操作

以上為個人理解,進行簡單劃分。具體對命令的理解,期待你的理解方法!

1. 賦值命令

  1. set:設置值
  2. setnx:如果值不存在則進行賦值
  3. mset:批量設值
  4. msetnx:批量設值,且key不存在
  5. getset:返回舊值,設值新值

2. 取值命令

  1. get:獲取key的值
  2. mget:批量獲取key的值

3. 特有命令

  1. exists:判斷key是否存在
  2. append:根據(jù)key進行追加
  3. strlen:獲取key的長度
  4. setrange:根據(jù)起終下標,進行設值(個人理解為字符串替換replace)
  5. getrange:根據(jù)起終下標,進行取值(個人理解為字符串截取substring)

4. 額外命令

  1. setex:設值key,并設置過期時間(單位:s/秒))
  2. psetex:設值key,并設置過期時間(單位:ms/毫秒))
  3. incr:int類型,進行key的自增(i++)
  4. decr:int類型,進行key的自減(i--)
  5. incrby:int類型,根據(jù)步長進行key的增加(i+n)
  6. decrby:int類型,根據(jù)步長進行key的增減(i-n)
  7. 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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容