redis数据类型

备注:测试版本 redis 4.0.9

文章目录

一.redis数据类型概述

数据类型概述
String字符串,redis的string可以包含任何数据,比如图片、序列化对象
一个键最大能存储512MB
Hash哈希, 一个键值对集合,hash特别适合用于存储对象,hash可以存储2^32 - 1 个键值对
List列表,Redis 列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
Set集合,Redis的Set是string类型的无序集合
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
zsetsorted set:有序集合

1.1 String

-- 默认是string类型 而且 单引号、双引号、无引号不影响输出
[root@10-31-1-119 ~]# redis-cli
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> set name 'www.itpub.net'
OK
127.0.0.1:6379> get name
"www.itpub.net"
127.0.0.1:6379> 
127.0.0.1:6379> set name "www.mysql.com"
OK
127.0.0.1:6379> get name
"www.mysql.com"
127.0.0.1:6379> 
127.0.0.1:6379> set name www.itpub.net
OK
127.0.0.1:6379> get name
"www.itpub.net"
127.0.0.1:6379> 

1.2 Hash

-- Hash存储键值对简直不要太方便
127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "sex"
6) "boy"
7) "age"
8) "30"
127.0.0.1:6379> 

1.3 List

127.0.0.1:6379> lpush database oracle
(integer) 1
127.0.0.1:6379> lpush database mysql
(integer) 2
127.0.0.1:6379> lpush database postgresql
(integer) 3
127.0.0.1:6379> lpush database redis
(integer) 4
127.0.0.1:6379> lpush database mongodb
(integer) 5
127.0.0.1:6379> lrange database 0 10
1) "mongodb"
2) "redis"
3) "postgresql"
4) "mysql"
5) "oracle"
127.0.0.1:6379> 

1.4 Set

127.0.0.1:6379> sadd databases oracle
(integer) 1
127.0.0.1:6379> sadd databases mysql
(integer) 1
127.0.0.1:6379> sadd databases postgresql
(integer) 1
127.0.0.1:6379> sadd databases redis
(integer) 1
127.0.0.1:6379> sadd databases mongodb
(integer) 1
127.0.0.1:6379> sadd databases hive
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> smembers databases
1) "postgresql"
2) "oracle"
3) "mysql"
4) "redis"
5) "hive"
6) "mongodb"
127.0.0.1:6379> 

1.5 zset

127.0.0.1:6379> zadd db 0 oracle
(integer) 1
127.0.0.1:6379> zadd db 0 mysql
(integer) 1
127.0.0.1:6379> zadd db 0 postgresql
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> zrangebyscore db 0 1000
1) "mysql"
2) "oracle"
3) "postgresql"
127.0.0.1:6379> 

二.字符串(String)

命令概述
set key value设置指定key的值
get key获取指定的key值
GETRANGE KEY_NAME start end截取字符串
GETSET KEY_NAME VALUE返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil
GETBIT KEY_NAME OFFSET字符串值指定偏移量上的位
MGET KEY1 KEY2 … KEYN一个包含所有给定 key 的值的列表
Setbit KEY_NAME OFFSET指定偏移量原来储存的位
SETEX KEY_NAME TIMEOUT VALUE设置成功时返回 OK
SETNX key value只有在 key 不存在时设置 key 的值。
SETRANGE key offsetvalue 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
STRLEN key返回 key 所储存的字符串值的长度。
MSET key value [key value …]同时设置一个或多个 key-value 对。
MSETNX key value [key value …]同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
PSETEX key milliseconds value这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,
而不是像 SETEX 命令那样,以秒为单位。
INCR key将 key 中储存的数字值增一
INCRBY key increment将 key 所储存的值加上给定的增量值(increment)
INCRBYFLOAT key increment将 key 所储存的值加上给定的浮点增量值(increment)
DECR key将 key 中储存的数字值减一
DECRBY key decrement key所储存的值减去给定的减量值(decrement)
APPEND key value如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾

2.1 SET 命令

语法:

SET key value 设置指定 key 的值

测试记录

127.0.0.1:6379> set my_db "I love redis"
OK
127.0.0.1:6379> get my_db
"I love redis"
127.0.0.1:6379> 

2.2 Get 命令

语法:

GET key 获取指定 key 的值。

测试记录

127.0.0.1:6379> set my_db "I love redis"
OK
127.0.0.1:6379> get my_db
"I love redis"
127.0.0.1:6379> 

2.3 Getrange 命令

语法:

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

测试记录

127.0.0.1:6379> set my_db "I love redis"
OK
127.0.0.1:6379> get my_db
"I love redis"
127.0.0.1:6379> getrange my_db 0 3
"I lo"
127.0.0.1:6379>  

2.4 Getset 命令

语法:

GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

测试记录

127.0.0.1:6379> get my_db
"I love redis"
127.0.0.1:6379> getset my_db "I love"
"I love redis"
127.0.0.1:6379> getset my_db "I love MySQL"
"I love"

2.5 Mget 命令

语法:

MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。

测试记录

127.0.0.1:6379> set db1 Oracle
OK
127.0.0.1:6379> set db2 MySQL
OK
127.0.0.1:6379> mget db1 db2
1) "Oracle"
2) "MySQL"
127.0.0.1:6379> mget db1 db2 some()otherkey
1) "Oracle"
2) "MySQL"
3) (nil)

2.6 Setex 命令

语法:

SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

测试记录

127.0.0.1:6379> setex db3 60 redis
OK
127.0.0.1:6379> get db3
"redis"
127.0.0.1:6379> TTL db3
(integer) 53
127.0.0.1:6379> TTL db3
(integer) 13
127.0.0.1:6379> TTL db3
(integer) -2
127.0.0.1:6379> get db3
(nil)

2.7 Setnx 命令

语法:

SETNX key value 只有在 key 不存在时设置 key 的值。

测试记录

127.0.0.1:6379> setnx db3 redis
(integer) 1
127.0.0.1:6379> setnx db3 redis
(integer) 0
127.0.0.1:6379> 

2.8 Setrange 命令

语法:

SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

测试记录

127.0.0.1:6379> SET key1 "Hello World"
OK
127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11

2.9 Strlen 命令

语法:

STRLEN key 返回 key 所储存的字符串值的长度。

测试记录

127.0.0.1:6379> GET key1
"Hello Redis"
127.0.0.1:6379> SET mykey "Hello world"
OK
127.0.0.1:6379> STRLEN mykey
(integer) 11

2.10 Mset 命令

语法:

MSET key value [key value ...] 同时设置一个或多个 key-value 对。

测试记录

127.0.0.1:6379> MSET key1 "Hello" key2 "World"
OK

2.11 Msetnx 命令

语法:

MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

测试记录

127.0.0.1:6379> MSETNX key1 "Hello" key2 "World"
(integer) 1
127.0.0.1:6379> get key1
"Hello"
127.0.0.1:6379> MSETNX key1 "Hello" key2 "World"
(integer) 0
127.0.0.1:6379> 

2.12 incr、incrbyfloat、incrby、decr、decrby

语法:

INCR key 将 key 中储存的数字值增一。
INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。
INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
DECR key 将 key 中储存的数字值减一。
DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。

测试记录

127.0.0.1:6379> set key 1
OK
127.0.0.1:6379> incr key
(integer) 2
127.0.0.1:6379> get key
"2"
127.0.0.1:6379> 
127.0.0.1:6379> incrbyfloat key 100
"102"
127.0.0.1:6379> get key
"102"
127.0.0.1:6379> 
127.0.0.1:6379> incrby key 11
(integer) 113
127.0.0.1:6379> get key
"113"
127.0.0.1:6379> 
127.0.0.1:6379> decr key
(integer) 112
127.0.0.1:6379> get key
"112"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> decrby key 12 
(integer) 100
127.0.0.1:6379> get key
"100"
127.0.0.1:6379> 

2.13 append命令

语法:

APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

测试记录

127.0.0.1:6379> set str 'abc'
OK
127.0.0.1:6379> get str
"abc"
127.0.0.1:6379> append str 'ddddd'
(integer) 8
127.0.0.1:6379> get str
"abcddddd"

三.哈希(Hash)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

命令概述
HDEL key field2 [field2]删除一个或多个哈希表字段
HEXISTS key field查看哈希表 key 中,指定的字段是否存在
HGET key field获取存储在哈希表中指定字段的值
HGETALL key获取在哈希表中指定 key 的所有字段和值
HINCRBY key field increment为哈希表 key 中的指定字段的整数值加上增量 increment
HINCRBYFLOAT key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment
HKEYS key获取所有哈希表中的字段
HLEN key获取哈希表中字段的数量
HMGET key field1 [field2]获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ]同时将多个 field-value (域-值)对设置到哈希表 key 中。
HSET key field value将哈希表 key 中的字段 field 的值设为 value
HSETNX key field value只有在字段 field 不存在时,设置哈希表字段的值
HVALS key获取哈希表中所有值
HSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对

3.1 Hdel 命令

语法:

HDEL key field2 [field2] 删除一个或多个哈希表字段

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> HDEL user:1 sex
(integer) 1
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
127.0.0.1:6379> 

3.2 Hexists 命令

语法:

HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> 
127.0.0.1:6379> hexists user:1 username
(integer) 1
127.0.0.1:6379> hexists user:1 user_name
(integer) 0
127.0.0.1:6379> 

3.3 Hget 命令

语法:

HGET key field 获取存储在哈希表中指定字段的值/td>

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hget user:1 username
"mysql"

3.4 Hgetall 命令

语法:

HGETALL key 获取在哈希表中指定 key 的所有字段和值

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"

3.5 Hincrby 命令

语法:

HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> Hincrby user:1 age 1
(integer) 31
127.0.0.1:6379> Hincrby user:1 age -1
(integer) 30

3.6 Hincrbyfloat 命令

语法:

HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hincrbyfloat user:1 age 0.1
"30.1"
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30.1"
7) "sex"
8) "boy"

3.7 Hkeys 命令

语法:

HKEYS key 获取所有哈希表中的字段

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hkeys user:1
1) "username"
2) "password"
3) "age"
4) "sex"
127.0.0.1:6379> 

3.8 Hlen 命令

语法:

HLEN key 获取哈希表中字段的数量

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hlen user:1
(integer) 4
127.0.0.1:6379> 

3.9 Hmget 命令

语法:

HMGET key field1 [field2] 获取所有给定字段的值

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"
127.0.0.1:6379> hmget user:1 username password sex
1) "mysql"
2) "www.mysql.com"
3) "boy"
127.0.0.1:6379> 

3.10 Hmset 命令

语法:

HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "age"
6) "30"
7) "sex"
8) "boy"

3.11 Hset 命令

语法:

HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。

测试记录

127.0.0.1:6379> hset user:2 username oracle
(integer) 1
127.0.0.1:6379> hget user:2 username
"oracle"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> hset user:2 password www.oracle.com
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
127.0.0.1:6379> 

3.12 Hsetnx 命令

语法:

HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。

测试记录

127.0.0.1:6379> hsetnx user:2 age 30
(integer) 1
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
5) "age"
6) "30"
127.0.0.1:6379> hsetnx user:2 age 10
(integer) 0
127.0.0.1:6379> hgetall user:2
1) "username"
2) "oracle"
3) "password"
4) "www.oracle.com"
5) "age"
6) "30"

3.13 Hvals 命令

语法:

HVALS key 获取哈希表中所有值

测试记录

127.0.0.1:6379> hmset user:1 username mysql password www.mysql.com sex boy age 30
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "mysql"
3) "password"
4) "www.mysql.com"
5) "sex"
6) "boy"
7) "age"
8) "30"
127.0.0.1:6379> 
127.0.0.1:6379> hvals user:1
1) "mysql"
2) "www.mysql.com"
3) "boy"
4) "30"
127.0.0.1:6379> 

四.列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

命令概述
BLPOP key1 [key2 ] timeout移出并获取列表的第一个元素,
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOP key1 [key2 ] timeout移出并获取列表的最后一个元素,
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
LINDEX key index通过索引获取列表中的元素
LINSERT key BEFORE or AFTER pivot value在列表的元素前或者后插入元素
LLEN key获取列表长度
LPOP key移出并获取列表的第一个元素
LPUSH key value1 [value2]将一个或多个值插入到列表头部
LPUSHX key value将一个或多个值插入到已存在的列表头部
LRANGE key start stop获取列表指定范围内的元素
LREM key count value移除列表元素
LSET key index value通过索引设置列表元素的值
LTRIM key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,
不在指定区间之内的元素都将被删除。
RPOP key移除并获取列表最后一个元素
RPOPLPUSH source destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回
RPUSH key value1 [value2]在列表中添加一个或多个值
RPUSHX key value为已存在的列表添加值

4.1 Blpop 命令

语法:

BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> blpop my_db 1
1) "my_db"
2) "tidb"
127.0.0.1:6379> blpop my_db 2
1) "my_db"
2) "hive"
127.0.0.1:6379> blpop my_db -1
(error) ERR timeout is negative
127.0.0.1:6379> 

-- 后面加入的在最前面
127.0.0.1:6379> lpush my_db2 oracle
(integer) 1
127.0.0.1:6379> lpush my_db2 mysql
(integer) 2
127.0.0.1:6379> blpop my_db2 1
1) "my_db2"
2) "mysql"

4.2 Brpop 命令

语法:

BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> lrange my_db 0 100
1) "tidb"
2) "hive"
3) "mongodb"
4) "redis"
5) "db2"
6) "sqlserver"
7) "mysql"
8) "oracle"
127.0.0.1:6379> BRPOP my_db 2
1) "my_db"
2) "oracle"
127.0.0.1:6379> lrange my_db 0 100
1) "tidb"
2) "hive"
3) "mongodb"
4) "redis"
5) "db2"
6) "sqlserver"
7) "mysql"
127.0.0.1:6379> 

4.3 Brpoplpush 命令

语法:

BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> lpush my_db2 dm
(integer) 1
127.0.0.1:6379> BRPOPLPUSH my_db my_db2 100
"oracle"
127.0.0.1:6379> lrange my_db 0 100
1) "tidb"
2) "hive"
3) "mongodb"
4) "redis"
5) "db2"
6) "sqlserver"
7) "mysql"
127.0.0.1:6379> lrange my_db2 0 100
1) "oracle"
2) "dm"
127.0.0.1:6379> 

4.4 Lindex 命令

语法:

LINDEX key index 通过索引获取列表中的元素

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> lindex my_db 1
"hive"
127.0.0.1:6379> lindex my_db 0
"tidb"
127.0.0.1:6379> 

4.5 Linsert 命令

语法:

LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql
(integer) 2
127.0.0.1:6379> 
127.0.0.1:6379> linsert my_db before mysql redis
(integer) 3
127.0.0.1:6379> lrange my_db 0 100
1) "redis"
2) "mysql"
3) "oracle"
127.0.0.1:6379> 

4.6 Llen 命令

语法:

LLEN key 获取列表长度

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> llen my_db
(integer) 8
127.0.0.1:6379> 

4.7 Lpop 命令

语法:

LPOP key 移出并获取列表的第一个元素

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> rpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> lpop my_db
"oracle"
127.0.0.1:6379> lrange my_db 0 100
1) "mysql"
2) "sqlserver"
3) "db2"
4) "redis"
5) "mongodb"
6) "hive"
7) "tidb"
127.0.0.1:6379> 

4.8 Lpush 命令

语法:

LPUSH key value1 [value2] 将一个或多个值插入到列表头部

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb
(integer) 8
127.0.0.1:6379> lrange my_db 0 100
1) "tidb"
2) "hive"
3) "mongodb"
4) "redis"
5) "db2"
6) "sqlserver"
7) "mysql"
8) "oracle"
127.0.0.1:6379> 

4.9 Lpushx 命令

语法:

LPUSHX key value 将一个或多个值插入到已存在的列表头部

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
6) "oracle"
127.0.0.1:6379> lpushx my_db hive tidb
(integer) 8
127.0.0.1:6379> lrange my_db 0 100
1) "tidb"
2) "hive"
3) "mongodb"
4) "redis"
5) "db2"
6) "sqlserver"
7) "mysql"
8) "oracle"
127.0.0.1:6379> 

4.10 Lrange 命令

语法:

LRANGE key start stop 获取列表指定范围内的元素

测试记录

127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
6) "oracle"

4.11 Lrem 命令

语法:

LREM key count value 移除列表元素
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lrem my_db 2 oracle
(integer) 1
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
127.0.0.1:6379> 
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lpush my_db oracle
(integer) 7
127.0.0.1:6379> 
127.0.0.1:6379> lrange my_db 0 100
1) "oracle"
2) "mongodb"
3) "redis"
4) "db2"
5) "sqlserver"
6) "mysql"
7) "oracle"
127.0.0.1:6379> 
127.0.0.1:6379> lrem my_db 2 oracle
(integer) 2
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
127.0.0.1:6379> 

4.12 Lset 命令

语法:

LSET key index value 通过索引设置列表元素的值

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> lset my_db 0 oracle
(error) ERR no such key
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> lpush my_db redis mongodb
(integer) 2
127.0.0.1:6379> lset my_db 0 oracle
OK
127.0.0.1:6379> 

4.13 Ltrim 命令

语法:

LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> ltrim my_db 0 1
OK
127.0.0.1:6379> 
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
127.0.0.1:6379> 

4.14 Rpop 命令

语法:

RPOP key 移除并获取列表最后一个元素

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
6) "oracle"
127.0.0.1:6379> rpop my_db 
"oracle"
127.0.0.1:6379> lrange my_db 0 100
1) "mongodb"
2) "redis"
3) "db2"
4) "sqlserver"
5) "mysql"
127.0.0.1:6379> 

4.15 Rpoplpush 命令

语法:

RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lpush my_db2 dm
(integer) 1
127.0.0.1:6379> rpoplpush my_db my_db2
"oracle"
127.0.0.1:6379> lrange my_db2 0 100
1) "oracle"
2) "dm"
127.0.0.1:6379> 

4.16 Rpush 命令

语法:

RPUSH key value1 [value2] 在列表中添加一个或多个值

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> rpush my_db oracle mysql sqlserver db2 redis mongodb
(integer) 6
127.0.0.1:6379> lrange my_db 0 100
1) "oracle"
2) "mysql"
3) "sqlserver"
4) "db2"
5) "redis"
6) "mongodb"
127.0.0.1:6379> 

4.17 Rpushx 命令

语法:

RPUSHX key value 为已存在的列表添加值

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> Rpushx my_db oracle
(integer) 0
127.0.0.1:6379> lrange my_db 0 100
(empty list or set)
127.0.0.1:6379> 
127.0.0.1:6379> rpush my_db mysql
(integer) 1
127.0.0.1:6379> Rpushx my_db oracle
(integer) 2
127.0.0.1:6379> lrange my_db 0 100
1) "mysql"
2) "oracle"
127.0.0.1:6379> 

五.集合(Set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令概述
Sadd向集合添加一个或多个成员
Scard获取集合的成员数
Sdiff返回给定所有集合的差集
Sdiffstore返回给定所有集合的差集并存储在 destination 中
Sinter返回给定所有集合的交集
Sinterstore返回给定所有集合的交集并存储在 destination 中
Sismember判断 member 元素是否是集合 key 的成员
Smembers返回集合中的所有成员
Smove将 member 元素从 source 集合移动到 destination 集合
Spop移除并返回集合中的一个随机元素
Srandmember返回集合中一个或多个随机数
Srem移除集合中一个或多个成员
Sunion返回所有给定集合的并集
Sunionstore所有给定集合的并集存储在 destination 集合中
Sscan迭代集合中的元素

5.1 SADD命令

语法:

SADD key member1 [member2] 向集合添加一个或多个成员

测试记录:

-- 返回值是添加元素的个数 重复的元素不会被重复添加,这点与list有区别
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 0
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379> 

5.2 SCARD命令

语法:

SCARD key 获取集合的成员数

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> scard my_db
(integer) 3
127.0.0.1:6379> 

5.3 SDIFF命令

语法:

SDIFF key1 [key2] 返回给定所有集合的差集

测试记录:

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> sdiff my_db my_db2
1) "MySQL"
2) "Oracle"
127.0.0.1:6379> 

5.4 SDIFFSTORE命令

语法:

SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> sdiffstore my_db3 my_db my_db2
(integer) 2
127.0.0.1:6379> smembers my_db3
1) "MySQL"
2) "Oracle"
127.0.0.1:6379> 

5.5 SINTER命令

语法:

SINTER key1 [key2] 返回给定所有集合的交集

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sinter my_db my_db2
1) "Redis"
127.0.0.1:6379> 

5.6 SINTERSTORE 命令

语法:

SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> sinter my_db my_db2
1) "Redis"
127.0.0.1:6379> 

5.7 SISMEMBER命令

语法:

SISMEMBER key member 判断 member 元素是否是集合 key 的成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sismember my_db Oracle
(integer) 1
127.0.0.1:6379> sismember my_db MongoDB
(integer) 0

5.8 SMEMBERS命令

语法:

SMEMBERS key 返回集合中的所有成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379> 

5.9 SMOVE命令

语法:

SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> smove my_db my_db2 Oracle
(integer) 1
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
127.0.0.1:6379> smembers my_db2
1) "Oracle"
127.0.0.1:6379> 

5.10 SPOP命令

语法:

SPOP key 移除并返回集合中的一个随机元素

测试记录

127.0.0.1:6379> del my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379> spop my_db
"Oracle"
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
127.0.0.1:6379> 

5.11 SRANDMEMBER命令

语法:

SRANDMEMBER key [count] 返回集合中一个或多个随机数

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> srandmember my_db
"MySQL"
127.0.0.1:6379> srandmember my_db 2
1) "MySQL"
2) "Oracle"
127.0.0.1:6379> srandmember my_db 4
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379> 

5.12 SREM命令

语法:

SREM key member1 [member2] 移除集合中一个或多个成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> srem my_db Oracle
(integer) 1
127.0.0.1:6379> srem my_db Oracle Redis
(integer) 1
127.0.0.1:6379> 

5.13 SUNION命令

语法:

SUNION key1 [key2] 返回所有给定集合的并集

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sunion my_db my_db2
1) "Redis"
2) "MySQL"
3) "MongoDB"
4) "Oracle"
127.0.0.1:6379> 

5.14 SUNIONSTORE命令

语法:

SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sunionstore my_db3 my_db my_db2
(integer) 4
127.0.0.1:6379> smembers my_db3
1) "Redis"
2) "MySQL"
3) "MongoDB"
4) "Oracle"
127.0.0.1:6379> 

5.15 SSCAN命令

语法:

SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sscan my_db 0 match O*
1) "0"
2) 1) "Oracle"
127.0.0.1:6379> sscan my_db2 0 match O*
1) "0"
2) (empty list or set)
127.0.0.1:6379> 

六.有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令概述
ZADD向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD获取有序集合的成员数
ZCOUNT计算在有序集合中指定区间分数的成员数
ZINCRBY有序集合中对指定成员的分数加上增量
ZINTERSTORE计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZLEXCOUNT在有序集合中计算指定字典区间内成员数量
ZRANGE通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYLEX通过字典区间返回有序集合的成员
ZRANGEBYSCORE通过分数返回有序集合指定区间内的成员
ZRANK返回有序集合中指定成员的索引
ZREM移除有序集合中的一个或多个成员
ZREMRANGEBYLEX移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE移除有序集合中给定的分数区间的所有成员
ZREVRANGE返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREVRANGEBYSCORE返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE返回有序集中,成员的分数值
ZUNIONSTORE计算给定的一个或多个有序集的并集,并存储在新的 key 中
ZSCAN迭代有序集合中的元素(包括元素成员和元素分值)

6.1 ZADD命令

语法:

ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

测试记录

127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 Memcache
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "Memcache"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> 

6.2 ZCARD命令

语法:

ZCARD key 获取有序集合的成员数

测试记录

del key my_db
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 Memcache
(integer) 1
127.0.0.1:6379> zcard my_db
(integer) 4
127.0.0.1:6379> 

6.3 ZCOUNT命令

语法:

ZCOUNT key min max 计算在有序集合中指定区间分数的成员数

测试记录

del key my_db
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 Memcache
(integer) 1
127.0.0.1:6379> zcount my_db 1 3
(integer) 4
127.0.0.1:6379> zcount my_db 1 1
(integer) 2
127.0.0.1:6379> 

6.4 ZINCRBY命令

语法:

ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment

测试记录

del key my_db
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 Memcache
(integer) 1
127.0.0.1:6379> zincrby my_db 1 Oracle
"2"
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Memcache"
4) "2"
5) "Oracle"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> 

6.5 ZINTERSTORE命令

语法:

ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zadd my_db2 100 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db2 100 Redis
(integer) 1
127.0.0.1:6379> zinterstore sum_db 2 my_db my_db2
(integer) 2
127.0.0.1:6379> zrange sum_db 0 -1 withscores
1) "Oracle"
2) "101"
3) "Redis"
4) "102"
127.0.0.1:6379> 

6.6 ZLEXCOUNT命令

语法:

ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zlexcount my_db - +
(integer) 4
127.0.0.1:6379> zlexcount my_db [A [F
(integer) 0
127.0.0.1:6379> 

6.7 ZRANGE命令

语法:

ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "MongoDB"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> 

6.8 ZRANGEBYLEX命令

语法:

ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zrangebylex my_db - +
1) "MySQL"
2) "Oracle"
3) "MongoDB"
4) "Redis"
127.0.0.1:6379> zrangebylex my_db - (O
1) "MySQL"
127.0.0.1:6379> zrangebylex my_db - (M
(empty list or set)
127.0.0.1:6379> 

6.9 ZRANGEBYSCORE命令

语法:

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zrangebyscore my_db 0 1
1) "MySQL"
2) "Oracle"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> zrangebyscore my_db 0 1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
127.0.0.1:6379> zrangebyscore my_db 0 2 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "MongoDB"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> 

6.10 ZRANK命令

语法:

ZRANK key member 返回有序集合中指定成员的索引

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zrank my_db MySQL
(integer) 0
127.0.0.1:6379> zrank my_db Oracle
(integer) 1
127.0.0.1:6379> 

6.11 ZREM命令

语法:

ZREM key member [member ...] 移除有序集合中的一个或多个成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1

6.12 ZREMRANGEBYLEX命令

语法:

ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> zadd my_db 1 Oracle
(integer) 1
127.0.0.1:6379> zadd my_db 1 MySQL
(integer) 1
127.0.0.1:6379> zadd my_db 2 Redis
(integer) 1
127.0.0.1:6379> zadd my_db 2 MongoDB
(integer) 1
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "MongoDB"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> zremrangebylex my_db [A [Z
(integer) 4
127.0.0.1:6379> zrange my_db 0 -1 withscores
(empty list or set)
127.0.0.1:6379> 

6.13 ZREMRANGEBYRANK命令

语法:

ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 0
127.0.0.1:6379> 
127.0.0.1:6379> zadd my_db 1 Oracle 1 MySQL 2 Redis 2 MOngoDB
(integer) 4
127.0.0.1:6379> 
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "MOngoDB"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> zremrangebyrank my_db 0 1
(integer) 2
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MOngoDB"
2) "2"
3) "Redis"
4) "2"
127.0.0.1:6379> 

6.14 ZREMRANGEBYSCORE命令

语法:

ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> zadd my_db 1 Oracle 1 MySQL 2 Redis 2 MOngoDB
(integer) 4
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MySQL"
2) "1"
3) "Oracle"
4) "1"
5) "MOngoDB"
6) "2"
7) "Redis"
8) "2"
127.0.0.1:6379> zremrangebyscore my_db 0 1
(integer) 2
127.0.0.1:6379> zrange my_db 0 -1 withscores
1) "MOngoDB"
2) "2"
3) "Redis"
4) "2"
127.0.0.1:6379> 

6.15 ZREVRANGE命令

语法:

ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底

6.16 ZREVRANGEBYSCORE命令

语法:

ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> zadd my_db 1 Oracle 1 MySQL 2 Redis 2 MOngoDB
(integer) 4
127.0.0.1:6379> zrevrange my_db 0 -1 withscores
1) "Redis"
2) "2"
3) "MOngoDB"
4) "2"
5) "Oracle"
6) "1"
7) "MySQL"
8) "1"
127.0.0.1:6379> 

6.17 ZREVRANK命令

语法:

ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> zadd my_db 1 Oracle 1 MySQL 2 Redis 2 MOngoDB
(integer) 4
127.0.0.1:6379> ZREVRANK my_db Oracle
(integer) 2
127.0.0.1:6379> ZREVRANK my_db MySQL
(integer) 3
127.0.0.1:6379> ZREVRANK my_db Redis
(integer) 0
127.0.0.1:6379> ZREVRANK my_db Mongodb
(nil)
127.0.0.1:6379> 

6.18 ZSCORE命令

语法:

ZSCORE key member 返回有序集中,成员的分数值

测试记录

127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> zadd my_db 1 Oracle 1 MySQL 2 Redis 2 MOngoDB
(integer) 4
127.0.0.1:6379> zrevrange my_db 0 -1 withscores
1) "Redis"
2) "2"
3) "MOngoDB"
4) "2"
5) "Oracle"
6) "1"
7) "MySQL"
8) "1"
127.0.0.1:6379> zscore my_db Oracle
"1"
127.0.0.1:6379> 

6.19 ZUNIONSTORE命令

语法:

ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中

测试记录

127.0.0.1:6379> zadd programmer 2000 peter 3500 jack 5000 tom
(integer) 3
127.0.0.1:6379> zadd manager 2000 henry 3500 mary 4000 bob
(integer) 3
127.0.0.1:6379>  ZRANGE programmer 0 -1 WITHSCORES
1) "peter"
2) "2000"
3) "jack"
4) "3500"
5) "tom"
6) "5000"
127.0.0.1:6379> ZRANGE manager 0 -1 WITHSCORES
1) "henry"
2) "2000"
3) "mary"
4) "3500"
5) "bob"
6) "4000"
127.0.0.1:6379> 
# 公司决定加薪。。。除了程序员。。。
127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 3   
(integer) 6
127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES
 1) "peter"
 2) "2000"
 3) "jack"
 4) "3500"
 5) "tom"
 6) "5000"
 7) "henry"
 8) "6000"
 9) "mary"
10) "10500"
11) "bob"
12) "12000"
127.0.0.1:6379> 

6.20 ZSCAN命令

语法:

ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)

参考

1.https://www.redis.net.cn/tutorial/3505.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值