1. 程式人生 > 其它 >Redis從0到精通--string

Redis從0到精通--string

String(字串)

##########################################################################
127.0.0.1:6379> set key1 v1 # 設定值
OK
127.0.0.1:6379> get key1 # 獲得值
"v1"
127.0.0.1:6379> keys * # 獲得所有的key
1) "key1"
127.0.0.1:6379> EXISTS key1 # 判斷某一個key是否存在
(integer) 1
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"
##########################################################################
# 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 # 可以設定步長,指定增量!
(integer) 9
127.0.0.1:6379> INCRBY views 10
(integer) 19
127.0.0.1:6379> DECRBY views 5
(integer) 14
##########################################################################
# 字串範圍 range
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"
##########################################################################
# setex (set with expire) # 設定過期時間
# setnx (set if not exist) # 不存在在設定 (在分散式鎖中會常常使用!)
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"
##########################################################################
mset
mget
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)
# 物件
set user:1 {name:zhangsan,age:3} # 設定一個user:1 物件 值為 json字元來儲存一個物件!
# 這裡的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"
##########################################################################
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"

資料結構是相同的!

String類似的使用場景:value除了是我們的字串還可以是我們的數字! 計數器 統計多單位的數量 粉絲數 物件快取儲存!