Redis常用命令詳解--JAVA(系列文章二)

之前已經基本介紹過Redis的基本使用,本文繼續基於《Redis起步安裝及基本命令--JAVA(系列文章一)》繼續編寫,主要介紹redis的常用命令。


字符串類型

字符串類型基本上和編程語言的字符串類型相差無幾,但是Redis中的字符串類型可以存儲 字符串、整數、浮點數。我們可以爲redis的字符串類型進行自增或者自減(整數或者浮點數),redis中整數的取值範圍爲CPU的位數的有符號整形(64位CPU 取值範圍爲有符號64位),浮點數爲double類型的雙精度浮點數,Redis能夠明確地區分字符串和整數和浮點數是一大優勢。

INCR  --- INCR key-name  將KEY存儲的值+1

DECR --- DECR key-name 將KEY存儲的值-1

INCRBY --- INCRBY key-name value 將KEY存儲的值加上value

DECRBY  --- DECRBY key-name value 將KEY存儲的值減去value

INCRBYFLOAT ---- INCRBYFLOAT key-name  不用多說這個是float類型的自增 redis2.6以上的命令

如果值不存在自增會在0的基礎上自增,如果不能自增的類型(字符串)直接報錯。

127.0.0.1:6379> SET A_KEY 10
OK
127.0.0.1:6379> INCR A_KEY 
(integer) 11
127.0.0.1:6379> INCRBY A_KEY 30
(integer) 41
127.0.0.1:6379> DECR A_KEY
(integer) 40
127.0.0.1:6379> DECRBY A_KEY 10
(integer) 30
127.0.0.1:6379> INCRBYFLOAT A_KEY 2.2
"32.2"


redis提供子串和二進制的命令

APPEND  --- APPEND key-name value 將值value追加到指定的KEY的值上。

GETRANGE ---- GETRANGE key-name start end 獲得KEY中的指定範圍的子字符串 包含start 和 end

SETRANGE  ---- SETRANGE key-name offset value 將從指定的offset偏移位置開始替換爲value的值

SETBIT --- SETBIT key-name offset value 將字符串看做二進制位串,並將位串偏移量爲offset的中設置爲value

BITCOUNT ---- BITCOUNT key-name [start end]  start和end爲可選項,統計KEY中二進制位1的數量。

BITOP  ----- BITOP operation dest-key key-name 對二進制位字符串進行操作(AND[並] OR[或] XOR[異或] NOT[非]) 將結果保存在dest-key中


127.0.0.1:6379> SET STRING_kEY ABC
OK
127.0.0.1:6379> APPEND STRING_kEY 123
(integer) 6
127.0.0.1:6379> GET STRING_kEY
"ABC123"
127.0.0.1:6379> GETRANGE STRING_kEY 2 5
"C123"
127.0.0.1:6379> SETRANGE STRING_kEY 5 EEEE
(integer) 9
127.0.0.1:6379> GET STRING_kEY
"ABC12EEEE"


列表類型

之前的文章都說過部分的命令了,這裏貼出一下

Redis 中的列表【LIST】

RPUSH     向列表右邊放入一個值

LPUSH      向列表左邊放入一個值

LPOP        在列表左邊彈出一個值

RPOP        在列表右邊彈出一個值

LINDEX     獲得列表中指定下標的值

LRANGE   獲得列表中一定範圍的值


127.0.0.1:6379> RPUSH MY_LIST_KEY VALUE_1 VALUE_2 VALUE_3

(integer) 3

127.0.0.1:6379> LRANGE MY_LIST_KEY 0 -1  注意開啓值爲0 結束值爲-1 可以範圍列表中所有數據

1) "VALUE_1"

2) "VALUE_2"

3) "VALUE_3"

127.0.0.1:6379> LPUSH MY_LIST_KEY VALUE_-1

(integer) 4

127.0.0.1:6379> LRANGE MY_LIST_KEY 0 4

1) "VALUE_-1"

2) "VALUE_1"

3) "VALUE_2"

4) "VALUE_3"

127.0.0.1:6379> LPOP MY_LIST_KEY

"VALUE_-1"

127.0.0.1:6379> RPOP MY_LIST_KEY

"VALUE_3"

127.0.0.1:6379> LRANGE MY_LIST_KEY 0 -1

1) "VALUE_1"

2) "VALUE_2"


列表類型還有如下這些常用命令

LTRIM --- LTRIM key-name start end 對列表進行修剪 保留start到end的元素 (start和end也會保留)


127.0.0.1:6379> RPUSH TEST_LIST A B C D 
(integer) 4
127.0.0.1:6379> LTRIM TEST_LIST 2 3
OK
127.0.0.1:6379> LRANGE TEST_LIST 0 -1
1) "C"
2) "D"


阻塞列表操作,用於實現消息隊列功能

BLPOP --- BLPOP key-name [key-name ....] timeout  從第一個非空列表中彈出位於最左邊的元素,或者阻塞等待可彈出元素,timeout代表等待超時

BRPOP ---- BRPOP key-name [key-name ...] timeout 同上不過是彈出最右邊的元素

RPOPLPUSH ---- RPOPLPUSH source-key dest-key --- 從source-key 列表中最右邊彈出一個元素  然後將這個元素push到dest-key 的最左邊

BRPOPLPUSH ---- BRPOPLPUSH source-key dest-key timeout 同上,但是這個是阻塞的命令


127.0.0.1:6379> DEL TEST_LIST
(integer) 1
127.0.0.1:6379> RPUSH TEST_LIST A B C D E F G
(integer) 7
127.0.0.1:6379> RPOPLPUSH TEST_LIST DEST_LIST 
"G"
127.0.0.1:6379> LRANGE DEST_LIST 0 -1
1) "G"


集合類型

之前的文章都說過部分的命令了,這裏貼出一下

SADD   爲指定的SET添加元素

SMEMBERS  返回指定SET的所有元素

SISMEMBER 檢查給定元素是否存在於集合當中。

SREM    如果給定的元素存在於集合中,那麼移除這些元素。


127.0.0.1:6379> SADD MY_SET A1 A2 A3 A4 A5

(integer) 5

127.0.0.1:6379> SMEMBERS MY_SET

1) "A3"

2) "A4"

3) "A2"

4) "A1"

5) "A5"

127.0.0.1:6379> SISMEMBER MY_SET A3

(integer) 1

127.0.0.1:6379> SISMEMBER MY_SET A8

(integer) 0

127.0.0.1:6379> SREM MY_SET A1

(integer) 1

127.0.0.1:6379> SMEMBERS MY_SET

1) "A4"

2) "A3"

3) "A2"

4) "A5"

127.0.0.1:6379> SREM MY_SET A8

(integer) 0


集合類型還有如下這些常用命令

SREM --- SREM key-name item [item ...]  從集合中移除item

SCARD --- SCARD key-name --- 返回集合的元素數量

SRANDMEMBER ---- SRANDMEMBER key-name [count] 從集合中隨機獲得一個或者多個元素,當count爲正數時 返回的元素不重複,當count爲負數時 返回的隨機元素有可能會重複

SPOP ---- SPOP key-name 隨機彈出一個元素

SMOVE --- SMOVE source-key dest-key item 將source-key中的item元素移動到 dest-key集合當中

127.0.0.1:6379> SADD TEST_SET A B C D E
(integer) 5
127.0.0.1:6379> SCARD TEST_SET
(integer) 5
127.0.0.1:6379> SRANDMEMBER TEST_SET 3
1) "A"
2) "B"
3) "D"
127.0.0.1:6379> SRANDMEMBER TEST_SET -3
1) "E"
2) "C"
3) "C"
127.0.0.1:6379> SPOP TEST_SET
"C"
127.0.0.1:6379> SMOVE TEST_SET DEST_SET A
(integer) 1
127.0.0.1:6379> SMEMBERS TEST_SET
1) "B"
2) "D"
3) "E"
127.0.0.1:6379> SMEMBERS DEST_SET
1) "A"


SDIFF --- SDIFF key-name [key-name ...] 返回那些存在於第一個集合、但不存在於其他的集合當中的元素(數學上的差集運算)

SDIFFSTORE --- SDIFFSTORE dest-key key-name [key-name ...] 將那些存在於第一個集合、但不存在於其他的集合當中的元素 存儲在dest-key(數學上的差集運算)

SINTER ---- SINTER key-name [key-name ...]  返回存在所有集合中的元素(獲得所有集合的並集)

SINTERSTORE ---- SINTERSTORE dest-key key-name [key-name ...]  將存在所有集合中的元素保存到dest-key中(保存所有集合的並集到dest-key集合中)

SUNION --- SUNION key-name [key-name ...] 返回所有集合的並集(至少在一個集合中出現一次的元素)

SUNIONSTORE ---- SUNIONSTORE dest-key key-name [key-name ...] 將所有集合的並集元素存儲在dest-key(至少在一個集合中出現一次的元素)


127.0.0.1:6379> SADD A_SET A B C D 1 2 3

(integer) 7

127.0.0.1:6379> SADD B_SET C D E F G 3 4 5 6

(integer) 9

127.0.0.1:6379> SDIFF A_SET B_SET

1) "B"

2) "2"

3) "1"

4) "A"

127.0.0.1:6379> SDIFFSTORE DEST_SET A_SET B_SET

(integer) 4

127.0.0.1:6379> SINTER A_SET B_SET

1) "D"

2) "3"

3) "C"

127.0.0.1:6379> SINTERSTORE DEST_SET A_SET B_SET

(integer) 3

127.0.0.1:6379> SUNION A_SET B_SET

 1) "B"

 2) "6"

 3) "G"

 4) "C"

 5) "D"

 6) "E"

 7) "1"

 8) "A"

 9) "3"

10) "4"

11) "2"

12) "5"

13) "F"

127.0.0.1:6379> SUNIONSTORE DEST_SET A_SET B_SET

(integer) 13


散列類型

之前的文章都說過部分的命令了,這裏貼出一下

HSET 在散列裏面添加鍵值對。

HGET 獲得指定HASH中的,指定的KEY的數據。

HGETALL  獲得HASH中所有鍵值對

HDEL 刪除指定HASH的某一鍵值對

127.0.0.1:6379> HSET MY_MAP SUB_KEY_1 SUB_VALUE_ABC

(integer) 1

127.0.0.1:6379> HSET MY_MAP SUB_KEY_2 SUB_VALUE_DDD

(integer) 1

127.0.0.1:6379> HGET MY_MAP SUB_KEY_2

"SUB_VALUE_DDD"

127.0.0.1:6379> HGETALL MY_MAP

1) "SUB_KEY_1"

2) "SUB_VALUE_ABC"

3) "SUB_KEY_2"

4) "SUB_VALUE_DDD"

127.0.0.1:6379> HDEL MY_MAP SUB_KEY_1

(integer) 1

127.0.0.1:6379> HGETALL MY_MAP

1) "SUB_KEY_2"

2) "SUB_VALUE_DDD"

127.0.0.1:6379> 


散列類型還有如下這些常用命令

HLEN  ---- HLEN key-name 返回散列的鍵值對數量

HEXISTS ---- HEXISTS key-name key 檢查指定的key是否存在在散列當中

HKEYS --- HKEYS key-name 返回散列中所有的KEY

HVALS ---- HVALS key-name 返回散列中所有的VALUE

HINCRBY --- HINCRBY key-name key increment  爲散列中指定的KEY的VALUE加上increment的值

HINCRBYFLOAT --- HINCRBYFLOAT key-name key increment  爲散列中指定的KEY的VALUE加上increment的值(加上的是浮點數)


127.0.0.1:6379> HSET TEST_HASH KEYA VALUEA

(integer) 1

127.0.0.1:6379> HSET TEST_HASH KEYB VALUEB

(integer) 1

127.0.0.1:6379> HSET TEST_HASH KEYC VALUEC

(integer) 1

127.0.0.1:6379> HLEN TEST_HASH

(integer) 3

127.0.0.1:6379> HKEYS TEST_HASH

1) "KEYA"

2) "KEYB"

3) "KEYC"

127.0.0.1:6379> HVALS TEST_HASH

1) "VALUEA"

2) "VALUEB"

3) "VALUEC"

127.0.0.1:6379> HEXISTS TEST_HASH KEYB

(integer) 1

127.0.0.1:6379> HSET TEST_HASH KEYD 33

(integer) 1

127.0.0.1:6379> HINCRBY TEST_HASH KEYD 3

(integer) 36

127.0.0.1:6379> HINCRBYFLOAT TEST_HASH KEYD 5.3

"41.3"


有序集合類型

之前的文章都說過部分的命令了,這裏貼出一下

ZADD  將帶有分值的member(成員)添加到指定的有序集合中。

ZRANGE  根據元素在有序排序中所處的位置,從有序集合中獲得一組數據。

ZRANGEBYSCORE  獲得一組給定分值範圍內的元素。

ZREM   從有序集合當中移除某個成員


127.0.0.1:6379> ZADD TEST_ZSET 123 KEYA 30 KEYB 20 KEYC

(integer) 3

127.0.0.1:6379> ZRANGE TEST_ZSET 0 -1

1) "KEYC"

2) "KEYB"

3) "KEYA"

127.0.0.1:6379> ZRANGEBYSCORE TEST_ZSET 30 200

1) "KEYB"

2) "KEYA"

127.0.0.1:6379> ZREM TEST_ZSET KEYC

(integer) 1


有序集合類型還有如下這些常用命令

ZCARD ---- ZCARD key-name 返回有序集合包含的成員數量

ZINCRBY ---- ZINCRBY key-name increment member 在有序集合中的某一個成員的分值上加上increment

ZCOUNT ----- ZCOUNT key-name min max 返回有序集合中分值 在 min 和 max 之間的元素數量

ZRANK  ----- ZRANK key-name member 返回有序集合中指定成員的排名

ZSCORE ---- ZSCORE key-name member 返回成員member的分值

127.0.0.1:6379> ZADD TEST_ZSET 98 KEYC

(integer) 1

127.0.0.1:6379> ZCARD TEST_ZSET

(integer) 3

127.0.0.1:6379> ZINCRBY TEST_ZSET 10 KEYC

"108"

127.0.0.1:6379> ZCOUNT TEST_ZSET 50 200

(integer) 2

127.0.0.1:6379> ZRANK TEST_ZSET KEYB

(integer) 0

127.0.0.1:6379> ZRANK TEST_ZSET KEYC

(integer) 1

127.0.0.1:6379> ZSCORE TEST_ZSET KEYC

"108"


ZREVRANK  ---- ZREVRANK key-name member 返回member的排名,按照從大到小進行排列

ZREVRANGE  ----- ZREVRANGE key-name start stop [withscores] 返回指定範圍的一組member 順序從大到小

ZRANGEBYSCORE --- ZRANGEBYSCORE key-name min max 返回分值在min 到 max之間的member

ZREVRANGEBYSCORE ---- ZREVRANGEBYSCORE key-name max min 和上面一樣 只不過順序倒轉

ZREMRANGEBYRANK --- ZREMRANGEBYRANK key-name start stop 移除有序集合中排名在start 到 stop之間的成員

ZREMRANGEBYSCORE ---- ZREMRANGEBYSCORE key-name min max 移除有序集合中分值在min 到 max 之間的成員


127.0.0.1:6379> ZADD ZKEY_A A 12 B 1 C22 D82 E15

(error) ERR syntax error

127.0.0.1:6379> ZADD ZKEY_A A 12 

(error) ERR value is not a valid float

127.0.0.1:6379> ZADD ZKEY_A 12 A 23 B 93 C

(integer) 3

127.0.0.1:6379> ZADD ZKEY_B 22 A 66 D 11 C 55 D

(integer) 3

127.0.0.1:6379> ZREVRANK ZKEY_A C

(integer) 0

127.0.0.1:6379> ZREVRANK ZKEY_A B

(integer) 1

127.0.0.1:6379> ZREVRANGE ZKEY_A 0 -1 WITHSCORES

1) "C"

2) "93"

3) "B"

4) "23"

5) "A"

6) "12"

127.0.0.1:6379> ZREVRANGEBYSCORE ZKEY_A 100 0 WITHSCORES

1) "C"

2) "93"

3) "B"

4) "23"

5) "A"

6) "12"

127.0.0.1:6379> ZREMRANGEBYRANK ZKEY_A 0 1

(integer) 2

127.0.0.1:6379> ZREMRANGEBYSCORE ZKEY_B 0 50

(integer) 2



ZINTERSTORE ---- ZINTERSTORE dest-key key-count key [key...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 對指定的key進行有序集合的交集運算並存儲在dest-key當中

ZUNIONSTORE ---- ZUNIONSTORE dest-key key-count key [key...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 對指定的key進行有序集合的並集運算並存儲在dest-key當中



127.0.0.1:6379> ZADD ZKEY_A 10 A 20 B 30 C 40 D

(integer) 4

127.0.0.1:6379> ZADD ZKEY_B 10 C 20 D 30 E 40 F 50 G

(integer) 5

127.0.0.1:6379> ZINTERSTORE ZINTER_DEST 2 ZKEY_A ZKEY_B AGGREGATE SUM

(integer) 2

127.0.0.1:6379> ZRANGE ZINTER_DEST 0 -1

1) "C"

2) "D"

127.0.0.1:6379> ZRANGE ZINTER_DEST 0 -1 WITHSCORES

1) "C"

2) "40"

3) "D"

4) "60"

127.0.0.1:6379> ZUNIONSTORE ZUNION_DEST 2 ZKEY_A ZKEY_B AGGREGATE MIN

(integer) 7

127.0.0.1:6379> ZRANGE ZUNION_DEST 0 -1

1) "A"

2) "C"

3) "B"

4) "D"

5) "E"

6) "F"

7) "G"

127.0.0.1:6379> ZRANGE ZUNION_DEST 0 -1 WITHSCORES 

 1) "A"

 2) "10"

 3) "C"

 4) "10"

 5) "B"

 6) "20"

 7) "D"

 8) "20"

 9) "E"

10) "30"

11) "F"

12) "40"

13) "G"

14) "50"


需要注意的是,我們使用ZUNIONSTORE 或者 ZINTERSTORE 需要指定需要進行運算的集合數量。aggregate 如果不指定的情況下默認爲sum,aggregate 主要的作用是那些SCORE之間的運算方式,上面使用SUM和MIN。如果我們兩個集合都有A A這個成員在兩個集合的score分別是 10 20 則合拼之後默認相加 在新的有序集合中A 的score爲30


KEY有效期

我們通常希望一些KEY到一定時間後會自動刪除,從而不會又太多的不使用數佔用內存。

EXPIRE ---- EXPIRE KEY-NAME SECONDS 對一個已經存在的KEY 設置過期時間

TTL ---- TTL KEY-NAME 獲得一個KEY距離過期時間還有多少秒

PERSIST --- PERSIST KEY-NAME 將一個KEY過期時間刪除

EXPIREAT ---- EXPIREAT KEY-NAME TIMESTAMP 對已經存在的KEY 設置失效時間爲UNIX時間戳  時間戳計算單位爲秒

PTTL ----- PTTL KEY-NAME 獲得一個KEY距離過期時間還有多少毫秒

PEXPIREAT --- PEXPIREAT KEY-NAME TIMESTAMP 對已經存在的KEY 設置失效時間爲UNIX時間戳  時間戳計算單位爲毫秒


127.0.0.1:6379> SET SKEY_A 1

OK

127.0.0.1:6379> EXPIRE SKEY_A 1000

(integer) 1

127.0.0.1:6379> TTL SKEY_A

(integer) 989

127.0.0.1:6379> PTTL SKEY_A

(integer) 973520

127.0.0.1:6379> PERSIST SKEY_A

(integer) 1

127.0.0.1:6379> TTL SKEY_A

(integer) -1






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章