String(字串)
- 前言
- 概括
- 1、append,strlen
- 2、 incr ,decr ,incrby設定自增步長,decrby
- 3、getrange截取字串,SETRANGE將指定位置字符 替換為 指定字串
- 4、setex ,setnx
- 5、mset mget 同時設定多個值,msetnx原子性操作
- 6、用字串 保存物件
- 7、getset 先get然后在set
前言
提示:本文章是日常學習內容的總結,并非全部原創;僅供大家參考借鑒,并無其他商業用途,Bilibili搜索關注:狂神說
真正在公司中的實踐:NoSQL + RDBMS 一起使用才是最強的,阿里巴巴的架構演進!
技術沒有高低之分,就看你如何去使用!(提升內功,思維的提高!)
云計算的長征之路:阿里云的這群瘋子
概括
String類似的使用場景:value除了是我們的字串還可以是我們的數字!
使用場景:
- 計數器
- 統計多單位的數量
- 粉絲數
- 物件快取存盤!
1、append,strlen
127.0.0.1:6379> set key1 v1 # 設定值
OK
127.0.0.1:6379> APPEND key1 "hello" # 追加字串,如果當前key不存在,就相當于setkey
(integer) 7
127.0.0.1:6379> get key1 "v1hello"
127.0.0.1:6379> STRLEN key1 # 獲取字串的長度!
(integer) 7
127.0.0.1:6379> APPEND key1 ",kaungshen"
(integer) 17
127.0.0.1:6379> STRLEN key1
(integer) 17
127.0.0.1:6379> get key1
"v1hello,kaungshen"
2、 incr ,decr ,incrby設定自增步長,decrby
# i++
# 步長 i+=
127.0.0.1:6379> set views 0 # 初始瀏覽量為0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views # 自增1 瀏覽量變為1
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views # 自減1 瀏覽量-1
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379> INCRBY views 10 # 可以設定步長,指定增量! 增加增加 10
(integer) 9
127.0.0.1:6379> INCRBY views 10
(integer) 19
127.0.0.1:6379> DECRBY views 5
(integer) 14
3、getrange截取字串,SETRANGE將指定位置字符 替換為 指定字串
127.0.0.1:6379> set key1 "hello,kuangshen" # 設定 key1 的值
OK
127.0.0.1:6379> get key1
"hello,kuangshen"
127.0.0.1:6379> GETRANGE key1 0 3 # 截取字串 [0,3]
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1 # 獲取全部的字串 和 get key是一樣的 "hello,kuangshen"
# 替換!
127.0.0.1:6379> set key2 abcdefg
OK
127.0.0.1:6379> get key2
"abcdefg"
127.0.0.1:6379> SETRANGE key2 1 xx # 替換指定位置開始的字串!
(integer) 7
127.0.0.1:6379> get key2
"axxdefg"
4、setex ,setnx
setex (set with expire) # 設定過期時間
setnx (set if not exis ) # 不存在在設定 (在分布式鎖中會常常使用!)
127.0.0.1:6379> setex key3 30 "hello" # 設定key3 的值為 hello,30秒后過期
OK
127.0.0.1:6379> ttl key3 (integer) 26
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> setnx mykey "redis" # 如果mykey 不存在,創建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "key2"
2) "mykey"
3) "key1"
127.0.0.1:6379> ttl key3
(integer) -2
127.0.0.1:6379> setnx mykey "MongoDB" # 如果mykey存在,創建失敗!
(integer) 0
127.0.0.1:6379> get mykey
"redis"
5、mset mget 同時設定多個值,msetnx原子性操作
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同時設定多個值
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3 # 同時獲取多個值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 # msetnx 是一個原子性的操作,要么一起成功,要么一起 失敗!
(integer) 0
127.0.0.1:6379> get k4
(nil)
6、用字串 保存物件
#Json方式
set user:1 {name:zhangsan,age:3} # 設定一個user:1 物件 值為 json字符來保存一個物件!
#key方式
# 這里的key是一個巧妙的設計: user:{id}:{filed} , 如此設計在Redis中是完全OK了!
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
7、getset 先get然后在set
127.0.0.1:6379> getset db redis # 如果不存在值,則回傳 nil
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongodb # 如果存在值,獲取原來的值,并設定新的值
"redis"
127.0.0.1:6379> get db
"mongodb"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/247637.html
標籤:其他
上一篇:【DaVinci Developer專題】-1-創建一個Workspace作業區
下一篇:論文筆記《Improving Docker Registry Design based on Production Workload Analysis》
