Redis五种数据类型常用命令及示例

本文详细介绍了Redis中的五大数据类型,包括Key的基本操作如删除、序列化、检查存在性等;String的操作如设置、获取、增加减少数值;Hash的添加、获取、删除等操作;List的插入、获取、修剪等方法;以及Set和SortedSet的添加、查询、移除等命令。这些内容对于理解和使用Redis进行数据存储和操作至关重要。
摘要由CSDN通过智能技术生成

前言

Redis的五种数据类型

Redis通常分以下五种数据类型:

  • Key

键,通用命令:

command key_name

其中command为命令,key_name为键名。

  • String

字符串,通用命令:

command key_name [value]

添加字符串值会用到value。

  • Hash

哈希,一个string类型的field和value的映射表,每个 hash 可以存储 2^23-1键值对。

  • List

列表,存储字符串,按插入顺序排序,分为头部插入和尾部插入。

  • Set

集合,无序集合,成员唯一,通过hash表实现,查找,删除,添加的复杂度都是O(1)。

  • Sorted Set

有序集合,和set相比,有序集合的每个成员多了一个分数score,通常通过score来进行排序。


  1. Key(键)

1.1 删除(DEL)

del key

当key存在时删除key,如果要删除多个key,将多个key用空格隔开:del key1 key2 key3

返回值:被删除的key的数量。

示例:

127.0.0.1:6379> del mykey1 mykey2 mykey3
(integer) 5

1.2 序列化(DUMP)

dump key

序列化key,并返回被序列化的值(不会改变key的值,只是返回序列化的值)。

返回值:被序列化后的值。

示例:

127.0.0.1:6379> dump mykey3
"\x00\bprotocll\a\x00p\xbc\xd4\xb0B\xd3\xe2\xc3"

1.3 检查键是否存在(EXISTS)

exists key

检查key是否存在。

返回值:存在返回1,不存在返回0。

示例:

# 检查一个存在的key
127.0.0.1:6379> exists mykey3
(integer) 1

# 检查一个不存在的key
127.0.0.1:6379> exists mykey
(integer) 0

1.4 给key设置过期时间

expire key seconds.      

给key设置过期时间,单位为秒

expireat key timestamp.    

给key设置过期时间,单位为时间戳。

pexpire key miilllisecond.   

给key设置过期时间,单位为毫秒。

pexpireat key mililisecond-timestamp.   

给key设置过期时间,单位为毫秒级的时间戳。

返回值:设置成功返回1,当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

示例:

# 给一个存在的key设置过期时间
127.0.0.1:6379> expire mykey3 1000
(integer) 1

# 给一个不存在的key设置过期时间
127.0.0.1:6379> expire mykey 1000
(integer) 0



# 其他命令只需将1000改为相应的时间或时间戳

1.5 获取和移除key的过期时间(TTL、PTTL、PERSIST)

ttl key.  

返回秒级的key的剩余生存时间。

返回值:返回秒级的key的剩余生存时间。

pttl key. 

返回毫秒级的key的剩余生存时间。

返回值:返回毫秒级的key的剩余生存时间。

persist key. 

移除key的过期时间,key将保持永久。

返回值:成功返回1,否则返回0。

示例:

127.0.0.1:6379> expire myzset3 1000
(integer) 1
127.0.0.1:6379> ttl myzset3
(integer) 990
127.0.0.1:6379> pttl myzset3
(integer) 958208
127.0.0.1:6379> persist myzset3
(integer) 1

1.6 查找key(KEYS)

keys pattern.    

查找所有符合给定模式(pattern)的key。

返回值:返回所有符合模式的key。

示例:

# 查找所有key
127.0.0.1:6379> keys *
 1) "myzset3"
 2) "myset"
 3) "myhash"

# 查找以myz开头的key
127.0.0.1:6379> keys myz*
1) "myzset3"
2) "myzset2"
3) "myzset4"
4) "myzset"

# 查找指定key
127.0.0.1:6379> keys myzset3
1) "myzset3"

1.7 移动key到另一数据库(MOVE)

move key database.  

将当前数据库的key移动到给定的数据库database中。

返回值:成功返回1,否则返回0。

示例:

# 在当前数据库为0的情况下,将myzset3移动到数据库1中
127.0.0.1:6379> move myzset3 1
(integer) 1

# 在当前数据库为1的情况下,将myzset3移动到数据库1中
127.0.0.1:6379> move myzset3 1
(integer) 0

1.8 随机获取一个key(RANDOMKEY)

randomkey.     

从当前数据库中随机返回一个key。

返回值:随机获取的key。

示例:

127.0.0.1:6379> randomkey
"myList1"

1.9 重命名key(RENAME)

rename key newkey.  

当newkey不存在时,将key重命名为newkey。

返回值:key 存在时,返回ok;当 key 不存在时,返回错误。

示例:

# key 存在且 newkey 不存在
127.0.0.1:6379> SET message "hello world"
OK
127.0.0.1:6379> RENAME message greeting
OK
127.0.0.1:6379> EXISTS message               # message 不复存在
(integer) 0
127.0.0.1:6379> EXISTS greeting              # greeting 取而代之
(integer) 1

# 当 key 不存在时,返回错误
127.0.0.1:6379> RENAME fake_key never_exists
(error) ERR no such key

# newkey 已存在时, RENAME 会覆盖旧 newkey
127.0.0.1:6379> SET pc "lenovo"
OK
127.0.0.1:6379> SET personal_computer "dell"
OK
127.0.0.1:6379> RENAME pc personal_computer
OK
127.0.0.1:6379> GET pc
(nil)
127.0.0.1:6379> GET personal_computer      # 原来的值 dell 被覆盖了
"lenovo"

1.10 获取key的类型(TYPE)

type key.  

返回key所存储值的类型。

返回值:返回key所存储值的类型。

示例:

127.0.0.1:6379> type myset
list
127.0.0.1:6379> type myzset4
zset
127.0.0.1:6379> type myhash
hash


  1. String(字符串)

2.1 设置获取key的值(SET、SETNX、GET、GETSET)

set key value.  

设置key的值。

set返回值:从 Redis 2.6.12 版本开始, SET 在设置操作成功完成时,才返回 OK 。

setnx key value.  

和set一样,当key不存在时才执行。

setnx返回值:和set一样。

get key.  

获取key的值。

get返回值:返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。

getset key value.   

将key的值设为value,并返回旧值。

返回值:返回旧值。

示例:

127.0.0.1:6379> set my1 "ffo"
OK
127.0.0.1:6379> get my1
"ffo"
127.0.0.1:6379> getset my1 "foo"
"ffo"

2.2 获取和设置子串(GETRANGE、SETRANGE、APPEND)

getrange key start end.

获取key中从start到end之间的子串,下标从0开始,支持切片。

返回值:start-end之间的子串。

setrange key offset value.

用value覆盖key原来的值,从offset开始

返回值:被修改后的字符串长度。

append key value.      

如果key存在且是字符串,就将value追加到key值的末尾。

返回值:追加指定值之后, key 中字符串的长度。

示例:

127.0.0.1:6379> getrange my1 0 -1
"foo"
127.0.0.1:6379> setrange my1 1 "ff"
(integer) 3
127.0.0.1:6379> get my1
"fff"

2.3 设置和获取指定偏移量上的位(SETBIT、GETBIT)

setbit key offset value.   

对key的值,设置或清除指定偏移量上的位(bit,二进制,只有0和1)。

返回值:指定偏移量原来储存的位。

getbit key offset.            

对key的值,返回指定偏移量上的位。

返回值:字符串值指定偏移量上的位(bit)。当 key 不存在时,返回 0 。

示例:

127.0.0.1:6379> setbit my1 1000 1
(integer) 0
127.0.0.1:6379> getbit my1 1000
(integer) 1

2.4 获取和设置一个或多个key(MGET、MSET,MSETNX)

mget key1 [key2 ...].                            

获取所有给定key的值。

返回值:所有给定key存储的值。

mset key1 value1 [key2 value2].         

同时设置一个或多个key-value对。

返回值:总是返回 OK 。

msetnx key1 value1 [key2 value2].     

和mset一样,不过当key不存在时才会执行。

返回值:当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。

示例:

127.0.0.1:6379> mset m1 "a" m2 "b" m3 "c"
OK
127.0.0.1:6379> mget m1 m2 m3
1) "a"
2) "b"
3) "c"

2.5 为key添加过期时间(SETEX、PSETEX)

setex key seconds value.            

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

返回值:设置成功时返回 OK 。

psetex key milliseconds value.  

同上,key的过期时间为毫秒级。

返回值:和setex一样。

示例:

127.0.0.1:6379> setex m4 1000 "d"
OK
127.0.0.1:6379> psetex m4 1000 "d"
OK

2.6 获取key值的长度(STRLEN)

strlen key.  

返回key值的长度。

返回值:key值的长度。

示例:

127.0.0.1:6379> get m1
"a"
127.0.0.1:6379> strlen m1
(integer) 1

2.7 对key中的数字值进行增减(INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY)

incr key.     

将key中的数字值增一

返回值:执行 INCR 命令之后 key 的值。

incrby key increment.   

将key的数字值加上给定的增量increment

返回值:加上指定的增量值之后, key 的值。

incrbyfloat key increment.    

将key的数字值加上给定的浮点增量值increment

返回值:执行命令之后 key 的值。

decr key.     

将key中的数字值减去一

返回值:执行命令之后 key 的值。

decrby key decrement.        

将key中的数字值减去给定的减量值decrement

返回值:减去指定减量值之后, key 的值。

示例:

127.0.0.1:6379> set mm1 5
OK
127.0.0.1:6379> incr mm1
(integer) 6
127.0.0.1:6379> incrby mm1 2
(integer) 8
127.0.0.1:6379> incrbyfloat mm1 0.5
"8.5"
127.0.0.1:6379> decr mm1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incrbyfloat mm1 0.5
"9"
127.0.0.1:6379> decr mm1
(integer) 8
127.0.0.1:6379> decrby mm1 2
(integer) 6


  1. Hash(哈希)

3.1 设置Hash(HMSET、HSET、HSETNX)

hmset key field1 value1 [field2 value2].     

同时将多个field-value对设置到key中。

返回值:如果命令执行成功,返回 OK 。

hset key field value.              

将key中的field的值设为value。

返回值:如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

hsetnx key field value.          

当field不存在时,设置field的值为value。

返回值:设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

示例:

127.0.0.1:6379> hmset mmh1 a "aa" b "bb" c "cc"
OK
127.0.0.1:6379> hset mmh1 d "dd"
(integer) 1
127.0.0.1:6379> hset mmh1 d "dd"
(integer) 0
127.0.0.1:6379> hsetnx mmh1 e "ee"
(integer) 1
127.0.0.1:6379> hsetnx mmh1 e "ee"
(integer) 0

3.2 获取Hash(HGET、HMGET、HGETALL、HKEYS、HVALS)

hget key field.                    

获取key中field的值。

返回值:返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

hmget key field1 [field2].   

获取key中给定的field的值。

返回值:一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

hgetall key.                        

获取key中多有field-value对。

返回值:以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

hkeys key.                          

获取key中的所有field。

返回值:包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。

hvals key.                            

获取key中的所有value。

返回值:一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。

示例:

127.0.0.1:6379> hget mmh1 a
"aa"
127.0.0.1:6379> hmget mmh1 a b c
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379> hgetall mmh1
 1) "a"
 2) "aa"
 3) "b"
 4) "bb"
 5) "c"
 6) "cc"
 7) "d"
 8) "dd"
 9) "e"
10) "ee"
127.0.0.1:6379> hkeys mmh1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> hvals mmh1
1) "aa"
2) "bb"
3) "cc"
4) "dd"
5) "ee"

3.3 获取长度(HLEN、HEXISTS、HDEL)

hlen key.                             

获取key中field-value对的数量。

返回值:哈希表中字段的数量。 当 key 不存在时,返回 0 。

示例:

127.0.0.1:6379> hlen mmh1
(integer) 5

3.4 删除(HDEL)

hdel key field1 [field2].      

删除一个或多个field。

返回值:被成功删除字段的数量,不包括被忽略的字段。

示例:

127.0.0.1:6379> hdel mmh1 a b c
(integer) 3

3.5 检查是否存在(HEXISTS)

hexists key field.                

查看key中field是否存在。

返回值:如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

示例:

# 对存在的field检查
127.0.0.1:6379> hexists mmh1 a
(integer) 1

# 对不存在的field检查
127.0.0.1:6379> hexists mmh1 z
(integer) 0

3.6 对Hash中field的数字值进行增减(HINCRBY、HINCRBYFLOAT)

hincrby key field increment.          

为key中的field的数字值加上increment。

返回值:执行 HINCRBY 命令之后,哈希表中字段的值。

hincrbyfloat key field increment.   

为key中的field的数字值加上increment的浮点增量。

返回值:执行 Hincrbyfloat 命令之后,哈希表中字段的值。

示例:

127.0.0.1:6379> hset mmh1 k 3
(integer) 1
127.0.0.1:6379> hincrby mmh1 k 2
(integer) 5
127.0.0.1:6379> hincrbyfloat mmh1 k 0.5
"5.5"
127.0.0.1:6379> hincrby mmh1 k 1
(error) ERR hash value is not an integer
127.0.0.1:6379> hincrbyfloat mmh1 k 0.5
"6"
127.0.0.1:6379> hincrby mmh1 k 1
(integer) 7


  1. List(列表)

4.1 插入、修改、修剪列表(LPUSH、LPUSHX、RPUSH、RPUSHX、LINSERT、LSET、LTRIM)

4.1.1 向头部或尾部插入(LPUSH、LPUSHX、RPUSH、RPUSHX)

lpush key value1 [value2 ...].       

将一个或多个值插入到列表头部。

lpushx key value.                        

将value插入到已存在的列表头部。

rpush key value [value2 ...].       

将一个或多个值插入到列表头部。

rpushx key value.                       

将value插入到已存在的列表尾部。

返回值:执行操作后,列表的长度。

示例:

127.0.0.1:6379> lpush mml1 "a" "b" "c"
(integer) 3
127.0.0.1:6379> lpushx mml1 "d"
(integer) 4
127.0.0.1:6379> lpushx mml2 "d"
(integer) 0
127.0.0.1:6379> rpush mml1 "e"
(integer) 5
127.0.0.1:6379> rpushx mml1 "f"
(integer) 6
127.0.0.1:6379> rpushx mml2 "f"
(integer) 0
# 获取一下元素
127.0.0.1:6379> lrange mml1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
6) "f"

4.1.2 向指定元素前后插入(LINSERT)

linsert key before | after pivot value.

当选before时,在列表的pivot元素前插入value;当选after时,在列表的pivot元素后插入value。

返回值:如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。

示例:

127.0.0.1:6379> linsert mml1 before "d" "g"
(integer) 7
127.0.0.1:6379> lrange mml1 0 -1
1) "g"
2) "d"
3) "c"
4) "b"
5) "a"
6) "e"
7) "f"
127.0.0.1:6379> linsert mml1 after "d" "p"
(integer) 8
127.0.0.1:6379> lrange mml1 0 -1
1) "g"
2) "d"
3) "p"
4) "c"
5) "b"
6) "a"
7) "e"
8) "f"

4.1.3 修改指定下标元素的值(LSET)

lset key index value.      

更改下标为index的值为value。

返回值:操作成功返回 ok ,否则返回错误信息。

示例:

127.0.0.1:6379> lset mml1 0 "gg"
OK
127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"
4) "c"
5) "b"
6) "a"
7) "e"
8) "f"

4.1.4 修剪列表(LTRIM)

ltrim key start stop.       

保留下标在start和sotp之间(包含)的元素,其余的全部删除。

返回值:命令执行成功时,返回 ok 。

示例:

127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"
4) "c"
5) "b"
6) "a"
7) "e"
8) "f"
127.0.0.1:6379> ltrim mml1 0 2
OK
127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"

4.2 获取、移除、获取并移除(LRANGE、LINDEX、LLEN、LREM、LPOP、RPOP、BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH)

4.2.1 获取元素(LRANGE、LINDEX)

lrange key start top

获取下标在start和stop之间的列表元素。支持切片。

返回值:一个列表,包含指定区间内的元素。

lindex key index

获取下标为indx的列表元素。

返回值:列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 nil 。

示例:

127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"

127.0.0.1:6379> lindex mml1 0
"gg"

4.2.2 获取长度(LLEN)

llen key

获取列表key的长度。

返回值:列表的长度。

示例:

127.0.0.1:6379> llen mml1
(integer) 3

4.2.3 移除元素(LREM)

lrem key count value

移除列表元素。 count > 0时,从头往尾移除count个value;

count < 0时,从尾往头移除count的绝对值个value;

count = 0时,移除所有value。

返回值:被移除元素的数量。 列表不存在时返回 0 。

示例:

127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "gg"
3) "gg"
4) "d"
5) "p"
127.0.0.1:6379> lrem mml1 2 "gg"
(integer) 2
127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"

4.2.4 移除并获取元素(LPOP、RPOP、BLPOP、BRPOP)

lpop key

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

返回值:列表的第一个元素。 当列表 key 不存在时,返回 nil 。

blpop key1 [key2] timeout

移出并获取列表的第一个元素,如果无元素会阻塞列表直到timeout超时或者发现元素。

返回值:如果列表为空,返回一个 nil 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

rpop key

rpop 移出并获取列表的最后一个元素。

返回值:列表的最后一个元素。 当列表不存在时,返回 nil 。

brpop key1 [key2] timeout 

移出并获取列表的最后一个元素,如果无元素会阻塞列表直到timeout超时或者发现元素。

返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

示例:

127.0.0.1:6379> lrange mml1 0 -1
1) "gg"
2) "d"
3) "p"
127.0.0.1:6379> lpop mml1
"gg"
127.0.0.1:6379> rpop mml1
"p"


127.0.0.1:6379> lrange mml1 0 -1
1) "cc"
2) "bb"
3) "aa"
4) "d"
127.0.0.1:6379> blpop mml1 30
1) "mml1"
2) "cc"
127.0.0.1:6379> brpop mml1 30
1) "mml1"
2) "d"

4.2.5 移除获取,并添加到另一个列表(RPOPLPUSH、BRPOPLPUSH)

rpoplpush source destination 

移出列表source的最后一个元素,并将该元素头插到另一个列表destination并返回该元素。

返回值:被弹出的元素。

brpoplpush source destination timeout 

如果列表没有元素会阻塞列表直到timeout超时或者发现元素,其余同上。

返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

示例:

127.0.0.1:6379> lpush m1 "aa" "bb" "cc" "dd"
(integer) 4
127.0.0.1:6379> lpush m2 "ee"
(integer) 1
127.0.0.1:6379> rpoplpush m1 m2
"aa"
127.0.0.1:6379> lrange m2 0 -1
1) "aa"
2) "ee"

# brpoplpush和上面的结果一样,只不过列表没有元素时会等待.

  1. Set ( 集合 )

5.1 添加元素(SADD)

sadd key member1 [member2]

向集合key中添加一个或多个member。

返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。

示例:

127.0.0.1:6379> sadd m1 "ffo" "ggo"
(integer) 2

5.2 获取元素(SMEMBERS)

smembers key

获取key中所有member。

返回值:集合中的所有成员。

示例:

127.0.0.1:6379> smembers m1
1) "ggo"
2) "ffo"

5.3 获取member的数量(SCARD)

scard key

获取key中member的数量。

返回值:key中member的数量。

示例:

127.0.0.1:6379> smembers m1
1) "ggo"
2) "ffo"
127.0.0.1:6379> scard m1
(integer) 2

5.4 判断member是否存在(SISMEMBER)

sismember key member

判断key中是否含有指定的member。

返回值:如果成员元素是集合的成员,返回 1 。 如果成员元素不是集合的成员,或 key 不存在,返回 0 。

示例:

127.0.0.1:6379> sismember m1 ggo
(integer) 1

5.5 返回一定数量member(SRANDMEMBER)

srandmember key [count]

返回key中count个member,如果count不写,则返回一个。

返回值:只提供集合 key 参数时,返回一个元素;如果集合为空,返回 nil 。 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。

示例:

127.0.0.1:6379> srandmember m1 2
1) "ffo"
2) "ggo"
127.0.0.1:6379> srandmember m1
"ffo"

5.6 移除元素(SREM、SPOP)

srem key member1 [member2]

移除key中一个或多个member。

返回值:被成功移除的元素的数量,不包括被忽略的元素。

spop key

移除并返回key中的一个随机元素。

返回值:被移除的随机元素。 当集合不存在或是空集时,返回 nil 。

示例:

127.0.0.1:6379> smembers m1
1) "ggo"
2) "ffo"
127.0.0.1:6379> srem m1 ggo
(integer) 1
127.0.0.1:6379> smembers m1
1) "ffo"

127.0.0.1:6379> spop m1
"ffo"
127.0.0.1:6379> smembers m1
(empty list or set)

5.7 移动元素(SMOVE)

smove source destination member

将member从source移动到destination中。

返回值:如果成员元素被成功移除,返回 1 。 如果成员元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。

示例:

127.0.0.1:6379> sadd m1 "aaa" "bbb" "ccc" "ddd" "eee" "fff"
(integer) 6
127.0.0.1:6379> smembers m1
1) "ccc"
2) "aaa"
3) "bbb"
4) "eee"
5) "fff"
6) "ddd"
127.0.0.1:6379> smove m1 m2 "aaa"
(integer) 1
127.0.0.1:6379> smembers m2
1) "aaa"
127.0.0.1:6379> smembers m1
1) "bbb"
2) "ccc"
3) "eee"
4) "fff"
5) "ddd"

5.8 交、并、差集(SINTER、SINTERSTORE、SUNION、SUNIONSTORE、SDIFF、SDIFFSTORE)

5.8.1 交集(SINTER、SINTERSTORE)

sinter key1 [key2]

返回给定key的交集。

返回值:交集成员的列表。

sinterstore destination key1 [key2] 

返回给定key的交集并存在destination中

返回值 :交集成员的列表。

示例:

127.0.0.1:6379> smembers m1
1) "ccc"
2) "eee"
3) "fff"
4) "ddd"
5) "bbb"
127.0.0.1:6379> smembers m2
1) "ccc"
2) "aaa"
3) "bbb"
127.0.0.1:6379> sinter m1 m2
1) "ccc"
2) "bbb"
127.0.0.1:6379> sinterstore m3 m1 m2
(integer) 2
127.0.0.1:6379> smembers m3
1) "ccc"
2) "bbb"

5.8.2 并集(SUNION、SUNIONSTORE)

sunion key1 [key2] 

返回所有给定key的并集。

返回值:并集成员的列表。

sunionstore destination key1 [key2] 

将所有给定key的并集存在destination中。

返回值:结果集中的元素数量。

示例:

127.0.0.1:6379> smembers m1
1) "ccc"
2) "eee"
3) "fff"
4) "ddd"
5) "bbb"
127.0.0.1:6379> smembers m2
1) "ccc"
2) "aaa"
3) "bbb"
127.0.0.1:6379> sunion m1 m2
1) "ccc"
2) "eee"
3) "fff"
4) "ddd"
5) "aaa"
6) "bbb"
127.0.0.1:6379> sunionstore m3 m1 m2
(integer) 6
127.0.0.1:6379> smembers m3
1) "ccc"
2) "eee"
3) "fff"
4) "ddd"
5) "aaa"
6) "bbb"

5.8.3 差集(SDIFF、SDIFFSTORE)

sdiff key1 [key2]

返回给定key的差集。

返回值:包含差集成员的列表。

sdiffstore destination key1 [key2] 

返回给定key的差集并存在destination中。

返回值:结果集中的元素数量。

示例:

127.0.0.1:6379> smembers m1
1) "ccc"
2) "eee"
3) "fff"
4) "ddd"
5) "bbb"
127.0.0.1:6379> smembers m2
1) "ccc"
2) "aaa"
3) "bbb"
127.0.0.1:6379> sdiff m1 m2
1) "ddd"
2) "eee"
3) "fff"
127.0.0.1:6379> sdiffstore m3 m1 m2
(integer) 3
127.0.0.1:6379> smembers m3
1) "ddd"
2) "eee"
3) "fff"

  1. Sorted Set(有序集合)

6.1 添加元素(ZADD)

zadd key score1 member1 [score2 member2]   

向有序集合key中添加一个或多个member,或者更新member的分数score

返回值:被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。

示例:

127.0.0.1:6379> zadd m1 100 "ffoo" 99 "gg"
(integer) 2

6.2 获取member(ZRANGE、ZRANGEBYLEX、ZRANGEBYSCORE)

zrange key start stop withscores 

返回索引在start-stop之间的的member。

返回值:指定区间内,带有分数值(可选)的有序集成员的列表。

zrangebylex key min max [limit offset count] 

返回在min-max之间的字典区间的member。

返回值:指定区间内的元素列表。

zrangebyscore key min max [withscores] [limit] 

返回分数在min-max之间的member。

在Redis中,-inf表示负无穷;+inf表示正无穷。[a表示含有a,(a表示不含a。

返回值:指定区间内,带有分数值(可选)的有序集成员的列表。

示例:


127.0.0.1:6379> zrange m1 0 -1 withscores
1) "gg"
2) "99"
3) "ffoo"
4) "100"
127.0.0.1:6379> zrange m1 0 -1
1) "gg"
2) "ffoo"


127.0.0.1:6379> zrangebylex m1 - +
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> zrangebylex m1 [a (d
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrangebylex m1 (a [d
1) "b"
2) "c"
3) "d"



127.0.0.1:6379> zrangebyscore m1 -inf +inf
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> zrangebyscore m1 0 30
1) "a"
2) "b"
3) "c"
4) "d"

6.3 获取member的数量(ZCARD、ZCOUNT、ZLEXCOUNT)

zcard key 

获取有序集合的member数。

返回值:当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。

zcount key min max 

计算key中score在min-max之间的member数。

返回值:分数值在 min 和 max 之间的成员的数量。

zlexcount key min max 

计算在min-max之间的字典区间内的member数。

返回值:指定区间内的成员数量。

示例:

127.0.0.1:6379> zcard m1
(integer) 6
127.0.0.1:6379> zcount m1 0 30
(integer) 4
127.0.0.1:6379> zlexcount m1 [a [d
(integer) 4

6.4 获取score(ZSCORE)

zscore key member 

返回key中member的score。

返回值:成员的分数值,以字符串形式表示。

示例:

127.0.0.1:6379> zrange m1 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "10"
 5) "c"
 6) "20"
 7) "d"
 8) "30"
 9) "e"
10) "40"
11) "f"
12) "50"
127.0.0.1:6379> zscore m1 d
"30"

6.5 获取member的索引(ZRANK)

zrank key member 

返回key中指定member的索引 。

返回值:如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 nil 。

示例:

127.0.0.1:6379> zrange m1 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "10"
 5) "c"
 6) "20"
 7) "d"
 8) "30"
 9) "e"
10) "40"
11) "f"
12) "50"
127.0.0.1:6379> zrank m1 d
(integer) 3

6.6 对member的score进行增减(ZINCRBY)

zincrby key increment member 

对key中的member的分数加上increment。

返回值:member 成员的新分数值,以字符串形式表示。

示例:

127.0.0.1:6379> zrange m1 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "10"
 5) "c"
 6) "20"
 7) "d"
 8) "30"
 9) "e"
10) "40"
11) "f"
12) "50"
127.0.0.1:6379> zincrby m1 200 d
"230"

6.7 对member进行排序(ZREVRANGE、ZREVRANGEBYSCORE、ZREVRANK)

zrevrange key start stop [withscores] 

按分数从高到低返回索引在start-stop之间的member。

返回值:指定区间内,带有分数值(可选)的有序集成员的列表。

zrevrangebyscore key max min [withscores] 

逆序排列score在max-min之间的member。

返回值:指定区间内,带有分数值(可选)的有序集成员的列表。

zrevrank key member 

返回按分数从大到小排序的指定的member的索引。

返回值:如果成员是有序集 key 的成员,返回成员的排名。 如果成员不是有序集 key 的成员,返回 nil 。

示例:

127.0.0.1:6379> zrevrange m1 0 -1 withscores
 1) "d"
 2) "230"
 3) "f"
 4) "50"
 5) "e"
 6) "40"
 7) "c"
 8) "20"
 9) "b"
10) "10"
11) "a"
12) "0"

127.0.0.1:6379> zrevrangebyscore m1 50 0 withscores
 1) "f"
 2) "50"
 3) "e"
 4) "40"
 5) "c"
 6) "20"
 7) "b"
 8) "10"
 9) "a"
10) "0"

127.0.0.1:6379> zrange m1 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "10"
 5) "c"
 6) "20"
 7) "e"
 8) "40"
 9) "f"
10) "50"
11) "d"
12) "230"
127.0.0.1:6379> zrevrank m1 d
(integer) 0

6.8 移除(ZREM、ZREMRANGEBYLEX、ZREMRANGEBYRANK、ZREMRANGEBYSCORE)

zrem key member [member2 ...] 

移除key中的一个或多个member。

返回值:移除key中分数在min-max之间的所有member。

zremrangebylex key min max 

移除key中在min-max之间的字典区间的所有member。

返回值:被成功移除的成员的数量,不包括被忽略的成员。

zremrangebyrank key start stop 

移除key中索引在start-stop之间的所有member。

返回值:被移除成员的数量。

zremrangebyscore key min max 

移除key中分数在min-max之间的所有member。

返回值:被移除成员的数量。

示例:

127.0.0.1:6379> zrange m1 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "10"
 5) "c"
 6) "20"
 7) "d"
 8) "30"
 9) "e"
10) "40"
11) "f"
12) "50"
13) "g"
14) "100"
15) "h"
16) "200"
127.0.0.1:6379> zrem m1 a
(integer) 1
127.0.0.1:6379> zremrangebylex m1 [a [c
(integer) 2
127.0.0.1:6379> zremrangebyrank m1 0 1
(integer) 2
127.0.0.1:6379> zremrangebyscore m1 150 250
(integer) 1
127.0.0.1:6379> zrange m1 0 -1 withscores
1) "f"
2) "50"
3) "g"
4) "100"

6.9 交集、并集(ZINTERSTORE、ZUNIONSTORE)

zinterstore destination numberkeys key [key2 ..] 

计算给定数量numberkeys的key的交集,并将结果存储在destination中。

返回值:保存到目标结果集的的成员数量。

zunionstore desination numkeys key [key2 ...]

计算给定数量numkeys的key的并集,将结果存储在destnation中。

返回值:保存到 destination 的结果集的成员数量。

示例:

127.0.0.1:6379> zrange m1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
127.0.0.1:6379> zrange m2 0 -1
1) "d"
2) "e"
3) "f"
4) "g"
5) "h"
6) "i"
7) "j"
127.0.0.1:6379> zinterstore m3 2 m1 m2
(integer) 4
127.0.0.1:6379> zrange m3 0 -1
1) "d"
2) "e"
3) "f"
4) "g"
127.0.0.1:6379> zunionstore m4 2 m1 m2
(integer) 10
127.0.0.1:6379> zrange m4 0 -1
 1) "a"
 2) "b"
 3) "c"
 4) "d"
 5) "h"
 6) "e"
 7) "i"
 8) "j"
 9) "f"
10) "g"


总结

制作不易,请小伙伴们多多点赞支持,蟹蟹,希望你我越来越强,hhh~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值