redis | 四、redis之String

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> 

適用場景:

  1. 計數器
  2. 統(tǒng)計多單位的數量
  3. 粉絲數
  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:根據key進行追加
  3. strlen:獲取key的長度
  4. setrange:根據起終下標,進行設值(個人理解為字符串替換replace)
  5. getrange:根據起終下標辫诅,進行取值(個人理解為字符串截取substring)

4. 額外命令

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菜枷,隨后出現(xiàn)的幾起案子苍糠,更是在濱河造成了極大的恐慌,老刑警劉巖啤誊,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岳瞭,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚊锹,警方通過查閱死者的電腦和手機瞳筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牡昆,“玉大人姚炕,你說我怎么就攤上這事《妫” “怎么了柱宦?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長播瞳。 經常有香客問我掸刊,道長,這世上最難降的妖魔是什么赢乓? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任忧侧,我火速辦了婚禮,結果婚禮上牌芋,老公的妹妹穿的比我還像新娘蚓炬。我一直安慰自己,他們只是感情好躺屁,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布试吁。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熄捍。 梳的紋絲不亂的頭發(fā)上烛恤,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音余耽,去河邊找鬼缚柏。 笑死,一個胖子當著我的面吹牛碟贾,可吹牛的內容都是我干的币喧。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼袱耽,長吁一口氣:“原來是場噩夢啊……” “哼杀餐!你這毒婦竟也來了?” 一聲冷哼從身側響起朱巨,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤史翘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冀续,有當地人在樹林里發(fā)現(xiàn)了一具尸體琼讽,經...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年洪唐,在試婚紗的時候發(fā)現(xiàn)自己被綠了钻蹬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡凭需,死狀恐怖问欠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情粒蜈,我是刑警寧澤顺献,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站薪伏,受9級特大地震影響,放射性物質發(fā)生泄漏粗仓。R本人自食惡果不足惜嫁怀,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望借浊。 院中可真熱鬧塘淑,春花似錦、人聲如沸蚂斤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捌治,卻和暖如春岗钩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肖油。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工兼吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人森枪。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓视搏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親县袱。 傳聞我的和親對象是個殘疾皇子浑娜,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容