这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战
概述
承接上一篇文章,本篇将继续记录redis数据结构中其他的两种数据类型,上一篇传送门:redis基础-数据类型以及常用命令-上
SET类型以及常用命令
set类型
集合类型,是redis中支持列表操作的数据类型
set类型的编码结构
- intset : 保存的元素全都是证书,总数量小于512
- hashtable:保存的袁术不是整数,总数量大于512
编码结构
intset结构
hashtable编码
编码之间的转换
原本是intset编码的,如果保存的数据不是整数值或者元素数量大于512,会转换为hashtable编码
常用命令
| 命令 | 功能描述 | 语法 | 示例 |
|---|---|---|---|
| sadd | 将一个或者多个member元素加入到集合当中个,已经存在于集合中的元素将被忽略;加入key不存在,则创建一个质保函member元素做成员的集合,当key不是集合类型时候,返回一个错误 | sadd key member [member ...] | sadd list 1 |
| srem | 移除集合中的一个或者多个member元素,不存在的member元素会被忽略;当key不是集合类型,返回一个错误 | srem key member [member ...] | srem list 1 |
| smembers | 返回集合中所有的成员 | smembers key | smembers list |
| sismember | 判断member成为是否为集合的成员。如果member元素是集合的成员,返回1;否则返回0 | sismembers key member | sismembers list 1 |
| scard | 返回集合中元素的数量 | scard key | scard list |
| smove | 将member元素从source集合移动到destination集合;如果member集合不存在或者不包含指定的member元素,则smove不进行任何操作,仅仅返回。否则,member元素从source集合中被移除,并添加到destination集合中去 | smove source destination member | smove list list 1 |
| spop | 移除并返回集合中一个随机元素,当集合不存在或者为空集合时,返回nil | spop key | spop list |
| srandmember | 返回集合中一个随机元素。该操作和spop相似,但spop将随机元素从集合中移除并返回,而srandmember则仅仅返回随机元素,而不对集合进行任何操作 | srandmember key | srandmember list |
| sinter | 返回一个集合的全部成员,该集合是所有给定集合的交集;不存在的集合被视为空集,当给定集合中有一个空集时,结果也是空集 | sinter key [key ...] | sinter list list2 |
| sinterscore | 此命令和sinter一样,但它将结果保存到destination集合中,而不是简单的返回结果,如果destination集合已经存在,则将其覆盖;destionation集合可以是key集合本身 | sinterscore destination key [key ...] | sinterscore list2 list |
| sunion | 返回一个集合的全部成员,该集合是所有给定集合的并集;不存在的集合则被视为空集 | sunion key [key ...] | sunion list list2 |
| sunionstore | 此命令等同于sunion,但它将结果保存到destination集合,而不是简单的返回结果集;如果destination已经存在,则将其覆盖,destination可以是key本身 | sunionstore destination key [key ...] | sunionstore list2 list |
| sdiff | 返回指定集合中的差集,不存在的key被视为空集 | sdiff key [key ...] | sdiff list list2 |
| sdiffstore | 此命令等同于sdiff,但是它将结果保存到destination集合中,而不是简单的返回结果集;如果destination集合已经存在,则将其覆盖;destination可以是key本身 | sdiffstore destination key [key ...] | sdiffstore list2 list |
ZSET类型以及常用命令
zset类型
有序集合,最典型的应用就是做排行榜功能
常用命令
| 命令 | 功能描述 | 语法 | 示例 |
|---|---|---|---|
| zadd | 将一个或者多个member元素加入到有序集合当中个,当某个member已经是有序集合的成员,那么更新这个member的score值,并通过重新插入这个member元素,来保证member在正确的位置上,score值可以是整数类型也可以是双精度浮点型;如果key不存在,则创建一个空的有序集合并执行zadd操作,当key存在但是不是有序类型集合时,返回一个错误 | zadd key score member [[score member ...]] | zadd list 1 create_time |
| zrem | 移除有序集合key中的一个或者多个成员,不存在的成员则被忽略;当key存在但是不是有序集合类型时候,返回一个错误 | zrem key member [[score member ...]] | zrem list create_time |
| zcard | 返回有序集合中元素的个数;当key存在切实有序集合时,返回有序集合元素的个数,不存在时候返回0 | zcard key | zcard key |
| zcount | 返回有序集合key中,score值在min和max之间的成员的数量 | zcount key min max | zcount list 0 4 |
| zscore | 返回you序集合中,成员member的score值,如果member元素不是有序集合key的成员,或者key不存在时,返回nil | zscore key member | zscore list create_time |
| zincrby | 为有序集合key的成员member的score值加上增量increment | zscore key member | zscore list create_time |
| zrange | 返回有序集合key中,指定区间内的成员,其中成员的位置按照score值递增(顺排)来排序 | zrange key start stop [WITHSCORES] | zrange list 0 2 |
| zrevrange | 返回有序集合key中,指定区间内的成员,其中成员的位置按照score值递增(倒排)来排序 | zrevrange key min max [WITHSCORES] [limit offset count] | zrevrange list 0 2 |
| zrangebyscore | 返回有序集合key中,所有score值介于min和max之间的成员。有序集合成员按照score值递增;具有相同score成员的按照字典排序来排列 | zrangebyscore key start stop [WITHSCORES] | zrangebyscore list 0 2 |
| zrevrangebyscore | 返回有序集合key中,所有score值介于min和max之间的成员。有序集合成员按照score值递增;具有相同score成员的按照字典的范旭排列 | zrevrangebyscore key max min [WITHSCORES] | zrevrangebyscore list 2 0 |
| zrank | 返回有序集合key中成员member的排名。其中有序集合成员按照score值顺序排列,排名以0位底,即score值最小的成员排名为0;如果member是有序集合key成员,则返回member的排名,否则返回nil | zrank key member | zrank list create_time |
| zrevrank | 返回有序集合key中成员member的排名。其中有序集合成员按照score值倒序排列,排名以0位底,即score值最大的成员排名为0;如果member是有序集合key成员,则返回member的排名,否则返回nil | zrevrank key member | zrevrank list create_time |
| zremrangebyrank | 移除有序集key中,指定排名(rank)区间内的所有成员。 | zremrangebyrank key start stop | zremrangebyrank list 0 1 |
| zremrangebyscore | 移除有序集key中,所有score介于min和max之间的成员 | zremrangebyscore key min max | zremrangebyscore list 0 1 |