redis基础-数据类型以及常用命令-下

333 阅读6分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

概述

承接上一篇文章,本篇将继续记录redis数据结构中其他的两种数据类型,上一篇传送门:redis基础-数据类型以及常用命令-上

SET类型以及常用命令

set类型

集合类型,是redis中支持列表操作的数据类型

set类型的编码结构

  • intset : 保存的元素全都是证书,总数量小于512
  • hashtable:保存的袁术不是整数,总数量大于512

编码结构

intset结构

intset结构.png

hashtable编码

redis-hashtable.png

编码之间的转换

原本是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 keysmembers list
sismember判断member成为是否为集合的成员。如果member元素是集合的成员,返回1;否则返回0sismembers key membersismembers list 1
scard返回集合中元素的数量scard keyscard list
smove将member元素从source集合移动到destination集合;如果member集合不存在或者不包含指定的member元素,则smove不进行任何操作,仅仅返回。否则,member元素从source集合中被移除,并添加到destination集合中去smove source destination membersmove list list 1
spop移除并返回集合中一个随机元素,当集合不存在或者为空集合时,返回nilspop keyspop list
srandmember返回集合中一个随机元素。该操作和spop相似,但spop将随机元素从集合中移除并返回,而srandmember则仅仅返回随机元素,而不对集合进行任何操作srandmember keysrandmember 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存在切实有序集合时,返回有序集合元素的个数,不存在时候返回0zcard keyzcard key
zcount返回有序集合key中,score值在min和max之间的成员的数量zcount key min maxzcount list 0 4
zscore返回you序集合中,成员member的score值,如果member元素不是有序集合key的成员,或者key不存在时,返回nilzscore key memberzscore list create_time
zincrby为有序集合key的成员member的score值加上增量incrementzscore key memberzscore 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的排名,否则返回nilzrank key memberzrank list create_time
zrevrank返回有序集合key中成员member的排名。其中有序集合成员按照score值倒序排列,排名以0位底,即score值最大的成员排名为0;如果member是有序集合key成员,则返回member的排名,否则返回nilzrevrank key memberzrevrank list create_time
zremrangebyrank移除有序集key中,指定排名(rank)区间内的所有成员。zremrangebyrank key start stopzremrangebyrank list 0 1
zremrangebyscore移除有序集key中,所有score介于min和max之间的成员zremrangebyscore key min maxzremrangebyscore list 0 1