1. 程式人生 > >Redis從零開始之redis命令--字串(string)

Redis從零開始之redis命令--字串(string)

前言:Redis命令列大小寫不敏感,做這些簡單的實驗可暫不糾結大小寫。
修改:之前的部落格只是給出了命令和解釋,修改後補充了具體的例項。

1 SET key value
設定指定 key 的值
2 GET key
獲取指定 key 的值。

127.0.0.1:6379> set key1 "hello kobe"
OK
127.0.0.1:6379> get key1
"hello kobe"

3 GETRANGE key start end
返回 key 中字串值的子字元

127.0.0.1:6379> GETRANGE key1 3 7
"lo ko"

range範圍是從“0”開始的。

4 GETSET key value
將給定 key 的值設為 value ,並返回 key 的舊值(old value)。

127.0.0.1:6379> GETSET key1 "hello bryant"
"hello kobe"
127.0.0.1:6379> get key1
"hello bryant"

用GETSET 已經將key1的值改了,返回的”hello kobe”是舊值。新值用get看已經變成”hello bryant”了。
5 GETBIT key offset
對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。

127.0.0.1:6379> SETBIT bit 123456 1
(integer) 0
127.0.0.1:6379> GETBIT bit 123456
(integer) 1

到這裡為了後面實驗更清晰,清除一下之前實驗留下的資料:

127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> keys *
(empty list or set)

FLUSHALL 這個命令會清楚現在所處資料庫的所有鍵值對,即所有資料。慎用哦!!自己練習沒有關係,但是線上操作的話一定慎用,除非你知道自己在做什麼。
6 MGET key1 [key2..]
獲取所有(一個或多個)給定 key 的值。

127.0.0.1:6379> set key1 "hello nba"
OK
127.0.0.1:6379> set key2 "hello kobybryant"
OK
127.0.0.1:6379> set key3 "hello fmvp"
OK
127.0.0.1:6379> mget key1 key2 key3
1) "hello nba"
2) "hello kobybryant"
3) "hello fmvp"

7 SETBIT key offset value
對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。

127.0.0.1:6379> SETBIT bit 10086 1
(integer) 0
127.0.0.1:6379> GETBIT bit 10086
(integer) 1
127.0.0.1:6379> GETBIT bit 100
(integer) 0

8 SETEX key seconds value
將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。

127.0.0.1:6379> SETEX key5 30 "hello world"
OK
127.0.0.1:6379> ttl key5
(integer) 28
127.0.0.1:6379> get key5
"hello world"
127.0.0.1:6379> ttl key5
(integer) 19
127.0.0.1:6379> ttl key5
(integer) 6
127.0.0.1:6379> ttl key5
(integer) -2
127.0.0.1:6379> get key5
(nil)

這裡設定的key5的過期時間是30秒。30秒之後,他的TTL(time to live)值就變成負的了。值也會失效,也就是不存在了,get他的時候當然是nil(為空)了。
9 SETNX key value
只有在 key 不存在時設定 key 的值。

10 SETRANGE key offset value
用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。

127.0.0.1:6379> set key4 abcdefg
OK
127.0.0.1:6379> get key4
"abcdefg"
127.0.0.1:6379> SETRANGE key4 2 123
(integer) 7
127.0.0.1:6379> get key4
"ab123fg"

同樣記住offset是從0開始的就可以了,返回的“7”是指的是value的長度。

11 STRLEN key
返回 key 所儲存的字串值的長度。(str字串len長度)

127.0.0.1:6379> STRLEN key4
(integer) 7

12 MSET key value [key value …]
同時設定一個或多個 key-value 對。

127.0.0.1:6379> mset "my key" "hello nab" "you key" "hello kobe"
OK
127.0.0.1:6379> mget "my key" "you key"
1) "hello nab"
2) "hello kobe"

只需要注意引號的使用就可以了,例如鍵或者值中間有空格,要將整個鍵或者值用引號引起來。以免系統識別紊亂。

13 MSETNX key value [key value …]
同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
與上條命令一樣。只是判斷鍵存不存在。

14 PSETEX key milliseconds value
這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。
毫秒跟秒之間的*1000就可以了啦。
15 INCR key
將 key 中儲存的數字值增一。

127.0.0.1:6379> set digitalkey 5
OK
127.0.0.1:6379> INCR digitalkey
(integer) 6
127.0.0.1:6379> INCR digitalkey
(integer) 7
127.0.0.1:6379> INCR digitalkey
(integer) 8
127.0.0.1:6379> INCR digitalkey
(integer) 9

就是將數次的value加1,限於數字的value。

127.0.0.1:6379> set key1 a
OK
127.0.0.1:6379> INCR key1
(error) ERR value is not an integer or out of range

16 INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment) 。

127.0.0.1:6379> get digitalkey
"9"
127.0.0.1:6379> INCRBY digitalkey 5
(integer) 14
127.0.0.1:6379> INCRBY digitalkey 5
(integer) 19

17 INCRBYFLOAT key increment
將 key 所儲存的值加上給定的浮點增量值(increment) 。
18 DECR key
將 key 中儲存的數字值減一。
19 DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。

127.0.0.1:6379> DECR digitalkey
(integer) 18
127.0.0.1:6379> DECR digitalkey
(integer) 17
127.0.0.1:6379> DECRBY digitalkey 5
(integer) 12
127.0.0.1:6379> DECRBY digitalkey 5
(integer) 7
127.0.0.1:6379> DECRBY digitalkey 5
(integer) 2

20 APPEND key value
如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。

127.0.0.1:6379> get "you key"
"hello kobe"
127.0.0.1:6379> APPEND "you key" "you are great basketball player !"

(integer) 43
127.0.0.1:6379> get "you key"
"hello kobeyou are great basketball player !"