1. 程式人生 > >Redis字串(STRING)介紹

Redis字串(STRING)介紹

上篇文章我們介紹了五種資料型別中一些通用的命令,本文我們來看看STRING資料型別獨有的操作命令。

本文是Redis系列的第三篇文章,瞭解前面的文章有助於更好的理解本文:

STRING

APPEND

使用APPEND命令時,如果key已經存在,則會直接在value後追加值,如果key不存在,則會先建立一個value為空字串的key,然後再追加:

127.0.0.1:6379> APPEND k1 hello
(integer) 5
127.0.0.1:6379> GET k1
"hello"
127.0.0.1:6379> APPEND k1 world
(integer) 10
127.0.0.1:6379> GET k1
"helloworld"

DECR

DECR命令可以實現對value的減1操作,如果key不存在,則key對應的初始值會被置為0,如果key的value不為數字,則會報錯,如下:

127.0.0.1:6379> SET k3 19
OK
127.0.0.1:6379> DECR k3
(integer) 18
127.0.0.1:6379> GET k3
"18"
127.0.0.1:6379> SET k4 aa
OK
127.0.0.1:6379> DECR k4
(error) ERR value is not an integer or out of range

DECRBY

DECRBY和DECR類似,不同的是DECRBY可以指定步長,如下:

127.0.0.1:6379> GET k3
"8"
127.0.0.1:6379> DECRBY k3 4
(integer) 4
127.0.0.1:6379> GET k3
"4"

GET

GET命令用來獲取對應key的value,如果key不存在則返回nil,如下:

127.0.0.1:6379> GET k5
(nil)

GETRANGE

GETRANGE用來返回key所對應的value的子串,子串由start和end決定,從左往右計算,如果下標是負數,則從右往左計算,其中-1表示最後一個字元,-2是倒數第二個…,如下:

127.0.0.1:6379> SET k1 helloworld
OK
127.0.0.1:6379> GETRANGE k1 0 2
"hel"
127.0.0.1:6379> GETRANGE k1 -3 -1
"rld"

GETSET

GETSET命令可以用來獲取key所對應的value,並對key進行重置,如下:

127.0.0.1:6379> SET k1 v1
OK
127.0.0.1:6379> GET k1
"v1"
127.0.0.1:6379> GETSET k1 vv
"v1"
127.0.0.1:6379> GET k1
"vv"

INCR

INCR操作可以對指定key的value執行加1操作,如果指定的key不存在,那麼在加1操作之前,會先將key的value設定為0,如果key的value不是數字,則會報錯。如下:

127.0.0.1:6379> INCR k2
(integer) 1

INCRBY

INCRBY和INCR功能類似,不同的是可以指定增長的步長,如下:

127.0.0.1:6379> INCRBY k2 99
(integer) 100

INCRBYFLOAT

INCRBYFLOAT命令可以用來增長浮點數,如下:

127.0.0.1:6379> SET k1 0.5
OK
127.0.0.1:6379> INCRBYFLOAT k1 0.33
"0.83"

MGET與MSET

MGET與MSET分別用來批量設定值和批量獲取值,如下:

127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> MGET k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

SETEX

SETEX用來給key設定value,同時設定過期時間,等效於先給key設定value,再給key設定過期時間,如下:

127.0.0.1:6379> SETEX k1 30 v1
OK
127.0.0.1:6379> TTL k1
(integer) 26
127.0.0.1:6379> GET k1
"v1"

PSETEX

PSETEX的作用和SETEX類似,不同的是,這裡設定過期時間的單位是毫秒,如下:

127.0.0.1:6379> PSETEX k1 60000 v1
OK
127.0.0.1:6379> PTTL k1
(integer) 55412

SETNX

SETNX是 SET if Not eXists的簡寫,SET命令在執行時,如果key已經存在,則新值會覆蓋掉舊值,而對於SETNX命令,如果key已經存在,則不做任何操作,如果key不存在,則效果等同於SET命令。如下:

127.0.0.1:6379> SETNX k1 v1
(integer) 1
127.0.0.1:6379> SETNX k1 vv
(integer) 0
127.0.0.1:6379> GET k1
"v1"

MSETNX

MSETNX兼具了SETNX和MSET的特性,但是MSETNX在執行時,如果有一個key存在,則所有的都不會執行,如下:

127.0.0.1:6379> MSETNX k1 v1 k2 v2
(integer) 0

因為k1已經存在,所以k2也沒執行成功。

SETRANGE

SETRANGE用來覆蓋一個已經存在的key的value,如下:

127.0.0.1:6379> set k1 helloworld
OK
127.0.0.1:6379> get k1
"helloworld"
127.0.0.1:6379> SETRANGE k1 5 redis
(integer) 10
127.0.0.1:6379> get k1
"helloredis"

但是如果已經存在的key的value長度小於offset,則不足的地方用0補齊,如下:

127.0.0.1:6379> set k1 helloredis
OK
127.0.0.1:6379> SETRANGE k1 20 --java
(integer) 26
127.0.0.1:6379> GET k1
"helloredis\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00--java"

STRLEN

STRLEN用來計算key的value的長度,如下:

127.0.0.1:6379> STRLEN k1
(integer) 26

OK,STRING相關的命令我們就介紹這麼多,當然還有很多其他的,小夥伴們可以參考官方文件http://www.redis.cn/commands.html。小夥伴在看官方文件時,有什麼問題歡迎留言討論。

更多資料請關注公眾號:

在這裡插入圖片描述