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






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