Redis数据类型

Redis数据类型

常见类型

  • string字符串类型
  • list列表类型
  • set集合类型
  • sortedset(zset)有序集合类型
  • hash类型

不常见类型

  • bitmap位图类型
  • geo地理位置类型

String字符串类型

Redis的String能表达3种值的类型:

  • 字符串
  • 整数
  • 浮点数

字符串相关命令如下表所示:

命令名称命令操作命令描述时间复杂度
SETSET key value [EX seconds] [PX milliseconds] [ NX][ XX ]给指定的key赋值为value ,EX设置秒级过期时间,PX设置毫秒级过期时间,NX表示key不存在时设置,XX表示key存在时设置O(1)
SETRANGESETRANGE key offset value覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度O(1)
SETBITSETBIT key offset value设置key的value在offset处的bit值。O(1)
SETNXSETNX key value当key不存在时才会赋值O(1)
SETEXSETEX key seconds value设置指定的key的value并加入秒级的过期时间O(1)
PSETEXPSETEX key milliseconds value设置指定的key的value并加入毫秒级的过期时间O(1)
GETGET key获取指定key的值O(1)
GETSETGETSET key value给指定的key赋值为value,并获取赋值之前的值O(1)
GETBITGETBIT key offset返回key对应的string在offset处的bit值 当offset超出了字符串长度的时候,这个字符串就被假定为由0比特填充的连续空间。O(1)
GETRANGEGETRANGE key start end返回key对应的字符串value的子串O(N)
APPENDAPPEND key value如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作O(1)
STRLENSTRLEN key返回key的string类型value的长度。如果key对应的非string类型,就返回错误。O(1)
BITCOUNTBITCOUNT key [start end]统计字符串被设置为1的bit数,一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。O(N)
BITFIELDBITFIELD key [GET type offset] [SETtype offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]本命令会把Redis字符串当作位数组,并能对变长位宽和任意未字节对齐的指定整型位域进行寻址。O(1)
BITOPBITOP <AND |OR | NOT|XOR> destkey key [key …]对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。O(N)
BITPOSBITPOS key bit [start] [end]返回字符串里面第一个被设置为1或者0的bit位。O(N)
DECRDECR key对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0O(1)
DECRBYDECRBY key将key对应的数字减decrement。如果key不存在,那么在操作之前,这个key对应的值会被置为0O(1)
INCRINCR key对存储在指定key的数值执行原子的加1操作。O(1)
INCRBYINCRBY key increment将key对应的数字加decrement。如果key不存在,操作之前,key就会被置为0。O(1)
INCRBYFLOATINCRBYFLOAT key increment通过指定浮点数key来增长浮点数increment. 当键不存在时,先将其值设为0再操作O(1)
MGETMGET MGET key [key …]返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nilO(N)
MSETMSET key value [key value …]批量进行SET操作O(N)
MSETNXMSETNX key value [key value …]批量进行SETNX操作O(N)

LIST集合类型

  • list列表类型可以存储有序、可重复的元素
  • 获取头部或尾部附近的记录是极快的
  • list的元素个数最多为2^32-1个(40亿)

集合相关命令如下表所示:

命令名称命令操作命令描述时间复杂度
BLPOPBLPOP key [key …] timeout弹出指定key列表的头元素,当给定列表内没有任何元素可供弹出的时候, 连接将被 BLPOP 命令阻塞,timeout可以指定阻塞的时长,为0则一直阻塞O(1)
BRPOPBRPOP key [key …] timeout弹出指定key列表的尾元素,当给定列表内没有任何元素可供弹出的时候, 连接将被 BLPOP 命令阻塞,timeout可以指定阻塞的时长,为0则一直阻塞O(1)
BRPOPLPUSHBRPOPLPUSH source destination timeout弹出指定source列表的尾元素,并将弹出的元素压入到destination 的列表头部,当给定source列表内没有任何元素可供弹出的时候, 连接将被阻塞,timeout可以指定阻塞的时长,为0则一直阻塞O(1)
LINDEXLINDEX key index返回指定key列表中索引是index的元素O(N)
LINSERTLINSERT key BEFORE|AFTER pivot value指定key的列表中,将value值存储到pivot元素的前面或后面O(N)
LLENLLEN key返回存储在 key 里的list的长度O(1)
LPOPLPOP key移除并且返回 key 对应的 list 的第一个元素O(1)
LPUSHLPUSH key value向指定key的集合头部压入value元素O(1)
LPUSHXLPUSHX key value [value …]只有当 key 已经存在并且存着一个 list 的时候,将所有指定的值插入到存于 key 的列表的头部O(1)
LRANGELRANGE key start stop返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标O(N)
LREMLREM key count value从指定 key 的列表里移除前 count 次出现的值为 value 的元素O(N)
LSETLSET key index value覆盖指定索引的集合元素O(N)
LTRIMLTRIM key start stop只保留指定索引位置的集合元素O(N)
RPOPRPOP key移除并且返回 key 对应的 list 的最后一个元素O(1)
RPOPLPUSHRPOPLPUSH source destination弹出指定source列表的尾元素,并将弹出的元素压入到destination 的列表头部O(1)
RPUSHRPUSH key value向指定key的集合尾部压入value元素O(1)
LPUSHXLPUSHX key value [value …]只有当 key 已经存在并且存着一个 list 的时候,将所有指定的值插入到存于 key 的列表的尾部O(1)

SET集合类型

  • 无序、唯一元素
  • 集合中最大的成员数为 2^32 - 1

集合相关命令如下表所示:

命令名称命令操作命令描述时间复杂度
SADDSADD key member [member …]向指定key的集合中插入member元素O(1)
SCARDSCARD key返回指定key集合的元素数量O(1)
SDIFFSDIFF key [key …]返回所有给定集合的差集的元素集合.O(N)
SDIFFSTORESDIFFSTORE destination key [key …]计算出所有给定集合的差集的元素集合并存储到指定的集合destination 中O(N)
SINTERSINTER key [key …]返回所有给定集合的交集的元素集合O(N)
SINTERSTORESINTERSTORE destination key [key …]计算出所有给定集合的交集的元素集合并存储到指定的集合destination 中O(N)
SISMEMBERSISMEMBER key member返回成员 member 是否是存储的集合 key的成员O(1)
SMEMBERSSMEMBERS key返回key集合所有的元素.O(N)
SMOVESMOVE source destination member将member从source集合移动到destination集合中O(1)
SPOPSPOP key [count]从存储在key的集合中移除并返回一个或多个随机元素。O(1)
SRANDMEMBERSRANDMEMBER key [count]从存储在key的集合中返回一个或多个随机元素。O(1)
SREMSREM key member [member …]在key集合中移除指定的元素O(N)
SSCANSSCAN key cursor [MATCH pattern] [COUNT count]用于迭代SET集合中的元素O(1)
SUNIONSUNION key [key …]返回给定的多个集合的并集中的所有成员.O(N)
SUNIONSTORESUNIONSTORE destination key [key …]计算出所有给定集合的并集的元素集合并存储到指定的集合destination 中O(N)

ZSET有序集合类型

命令名称命令操作命令描述时间复杂度
ZADDZADD key [NX|XX] [CH] [INCR] score member [score member …]将所有指定成员添加到键为key有序集合(sorted set)里面。 添加时可以指定多个分数/成员(score/member)对,其中,XX表示仅仅更新存在的成员,不添加新成员,NX表示不更新存在的成员。只添加新成员,CH表示修改返回值为发生变化的成员总数,INCR表示对指定member累加操作。O(log(N))
ZCARDZCARD key返回key的有序集元素个数O(1)
ZCOUNTZCOUNT key min max返回指定集合分数在min和max之间(包括min和max)的元素个数O(log(N))
ZINCRBYZINCRBY key increment member为有序集key的成员member的score值加上增量incrementO(log(N))
ZINTERSTOREZINTERSTORE destination numkeys key [key …] [WEIGHTS weight] [SUM|MIN|MAX]计算给定的numkeys个有序集合的交集,并且把结果放到destination中,numkeys指定需要求交集的个数,WEIGHTS指定每个Key的权重,SUM表示将每个集合中key相同的进行求和,MIN表示求最小值,MAX表示求最大值O(N)+O(M*log(M))
ZLEXCOUNTZLEXCOUNT key minmember maxmeneber计算有序集合中在指定成员分数之间的成员数量O(log(N))
ZPOPMAXZPOPMAX key [count]删除并返回count个有序集合key中最高得分的成员O(log(N)*M)
ZPOPMINZPOPMIN key [count]删除并返回count个有序集合key中最低得分的成员O(log(N)*M)
ZRANGEZRANGE key start stop [WITHSCORES]返回存储在有序集合key中的指定范围的元素。 返回的元素按得分从最低到最高排列。 如果得分相同,将按字典排序。O(log(N)+M)
ZREVRANGEZREVRANGE key start stop [WITHSCORES]返回存储在有序集合key中的指定范围的元素。 返回的元素按得分从最高到低高排列。 如果得分相同,将按字典排序。O(log(N)+M)
ZRANGEBYLEXZRANGEBYLEX key minmember maxmeneber [LIMIT offset count]返回指定成员区间内的成员,按成员字典正序排序, 成员分数必须相同O(log(N)+M)
ZREVRANGEBYLEXZREVRANGEBYLEX key minmember maxmeneber [LIMIT offset count]返回指定成员区间内的成员,按成员字典倒序排序, 成员分数必须相同O(log(N)+M)
ZRANGEBYSCOREZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素),元素从低分到高分排序。O(log(N)+M)
ZREVRANGEBYSCOREZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素),元素从高分到低分排序。O(log(N)+M)
ZRANKZRANK key member返回有序集key中成员member的排名,按照正序排序O(log(N))
ZREVRANKZREVRANK key member返回有序集key中成员member的排名,按照倒叙排序O(log(N))
ZREMZREM key member [member …]删除指定集合中的memeber元素O(1)
ZREMRANGEBYLEXZREMRANGEBYLEX key min max删除名称按字典由低到高排序成员之间所有成员,成员分数必须相同O(log(N)+M)
ZREMRANGEBYRANKZREMRANGEBYRANK key start stop删除指定排名区间的由低到高排序成员之间所有成员O(log(N)+M)
ZREMRANGEBYSCOREZREMRANGEBYSCORE key key min max删除指定分数区间的由低到高排序成员之间所有成员O(log(N)+M)
ZSCANZSCAN key cursor [MATCH pattern] [COUNT count]扫描集合中的元素O(N)
ZSCOREZSCORE key member返回有序集key中,成员member的score值。O(1)
ZUNIONSTOREZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [SUM|MIN|MAX]计算给定的numkeys个有序集合的并集,并且把结果放到destination中。在给定要计算的key和其它参数之前,必须先给定key个数(numberkeys)。 默认情况下,结果集中某个成员的score值是所有给定集下该成员score值之和。O(N)+O(M log(M))

HASH类型

命令名称命令操作命令描述时间复杂度
HDELHDEL key field [field …]从 key 指定的哈希集中移除指定的字段O(1)
HEXISTSHEXISTS key field返回hash里面field是否存在O(1)
HGETHGET key field返回 key 指定的哈希集中字段的值O(1)
HGETALLHGETALL key返回 key 指定的哈希集中所有的字段和值O(N)
HINCRBYHINCRBY key field increment增加 key 指定的哈希集中指定字段的数值O(1)
HINCRBYFLOATHINCRBYFLOAT key field increment增加 key 指定的哈希集中指定字段的数值O(1)
HKEYSHKEYS key field返回 key 指定的哈希集中所有字段的名字。O(N)
HLENHLEN key返回 key 指定的哈希集包含的字段的数量。O(1)
HMGETHMGET key field [field …]返回 key 指定的哈希集中指定字段的值O(N)
HMSETHMSET key field value [field value …]设置 key 指定的哈希集中指定字段的值O(N)
HSCANHSCAN key cursor [MATCH pattern] [COUNT count]扫描哈希集数据O(1)
HSETHSET key field value设置 key 指定的哈希集中指定字段的值O(1)
HSETNXHSETNX key field value只在 key 指定的哈希集中不存在指定的字段时,设置字段的值O(1)
HSTRLENHSTRLEN key field返回hash指定field的value的字符串长度O(1)
HVALSHVALS key返回 key 指定的哈希集中所有字段的值。O(1)

GEO类型

命令名称命令操作命令描述时间复杂度
GEOADDGEOADD key longitude latitude member [longitude latitude member …]将指定的地理空间位置(纬度、经度、名称)添加到指定的key中O(log(N))
GEODISTGEODIST key member1 member2 [unit]返回两个给定位置之间的距离。O(log(N))
GEOHASHGEOHASH key member [member …]返回一个或多个位置元素的hash值O(log(N))
GEOPOSGEOPOS key member [member …]从key里返回所有给定位置元素的位置(经度和纬度)O(log(N))
GEORADIUSGEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。O(N+log(M))
GEORADIUSBYMEMBERGEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点指定成员的位置被用作查询的中心。O(N+log(M))

PUB/SUB类型

命令名称命令操作命令描述时间复杂度
PSUBSCRIBEPSUBSCRIBE pattern [pattern …]订阅给定的模式(patterns)。O(N)
PUBLISHPUBLISH channel message将信息 message 发送到指定的频道 channelO(N)
PUBSUBPUBSUB subcommand [argument [argument …]]PUBSUB 是自省命令,能够检测PUB/SUB子系统的状态。它由分别详细描述的子命令组成。-
PUBSUB CHANNELSPUBSUB CHANNELS [pattern]列出当前活跃的队列.活跃是指队列含有一个或多个订阅者O(N)
PUBSUB NUMSUBPUBSUB NUMSUB [channel-1 … channel-N]列出指定队列的订阅者个数O(N)
PUBSUB NUMPATPUBSUB NUMPAT返回订阅模式的数量O(N)
PUNSUBSCRIBEPUNSUBSCRIBE [pattern [pattern …]]客户端退订指定模式的队列,如果没有提供模式则取消订阅所有模式匹配的队列O(N)
SUBSCRIBESUBSCRIBE [channel [channel …]]订阅指定队列O(N)
UNSUBSCRIBEUNSUBSCRIBE [channel [channel …]]取消订阅指定队列O(N)

STREAMS类型

命令名称命令操作命令描述时间复杂度
XACKXACK key group ID [ID …]从流的消费者组的待处理条目列表(简称PEL)中删除一条或多条消息。O(logN)
XADDXADD key ID field string [field string …]将指定的流条目追加到指定key的流中O(logN)
XCLAIMXCLAIM key group consumer min-idle-time ID [ID …] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID]在流的消费者组上下文中,此命令改变待处理消息的所有权, 因此新的所有者是在命令参数中指定的消费者O(logN)
XDELXDEL key ID [ID …]从指定流中移除指定的条目,并返回成功删除的条目的数量O(logN)
XGROUPXGROUP [CREATE key groupname id-or- ] [ S E T I D k e y i d − o r − ] [SETID key id-or- ][SETIDkeyidor] [DESTROY key groupname] [DELCONSUMER key groupname consumername]用于管理流数据结构关联的消费者组,创建与流关联的新消费者组。该命令可以销毁一个消费者组、从消费者组中移除指定的消费者、将消费者组的最后交付ID设置为其他内容。O(logN)
XINFOXINFO [CONSUMERS key groupname] key key [HELP]用于检索关于流和关联的消费者组的不同的信息,O(N)
XINFO STREAMXINFO STREAM key返回有关存储在特定键的流的一般信息O(N)
XINFO GROUPSXINFO GROUPS key获得与流关联的所有消费者组的输出O(N)
XINFO CONSUMERSXINFO CONSUMERS key group取得指定消费者组中的消费者列表O(N)
XLENXLEN key返回流中的条目数O(1)
XPENDINGXPENDING key group [start end count] [consumer]通过消费者组从流中获取数据O(logN+M)
XRANGEXRANGE key start end [COUNT count]返回流中满足给定ID范围的条目,范围由最小和最大ID指定O(logN)
XREVRANGEXREVRANGE key start end [COUNT count]返回流中满足给定ID范围的条目,范围由最小和最大ID指定O(logN)
XREADXREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key …] ID [ID …]从一个或者多个流中读取数据,仅返回ID大于指定的条目ID。O(logN)
XREADGROUPXREADGROUP [COUNT count] [BLOCK milliseconds] STREAMS key [key …] ID [ID …]XREADGROUP命令是XREAD命令的特殊版本,支持消费者组O(logN + M)
XTRIMXTRIM key MAXLEN [~] count将流裁剪为指定数量的项目

SCRIPTING类型

命令名称命令操作命令描述时间复杂度
EVALEVAL script numkeys key [key …] arg [arg …]使用内置的 Lua 解释器,可以对 Lua 脚本进行求值-
EVALSHAEVALSHA sha1 numkeys key [key …] arg [arg …]根据给定的 SHA1 校验码,对缓存在服务器中的脚本进行求值-
SCRIPT DEBUGSCRIPT DEBUG YES|SYNC|NO使用EVAL可以开启对脚本的调试,YES. 打开非阻塞异步调试模式,调试Lua脚本(回退数据修改)、SYNC. 打开阻塞同步调试模式,调试Lua脚本(保留数据修改稿)、NO. 关闭脚本调试模式-
SCRIPT EXISTSSCRIPT EXISTS script [script …]检查脚本是否存在脚本缓存里面-
**SCRIPT FLUSH ****SCRIPT FLUSH **清空Lua脚本缓存-
**SCRIPT KILL ****SCRIPT KILL **杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。-
SCRIPT LOADSCRIPT LOAD script将脚本 script 添加到脚本缓存中,但并不立即执行该脚本-

TRANSACTIONS类型

命令名称命令操作命令描述时间复杂度
DISCARDDISCARD刷新一个事务中所有在排队等待的指令,并且将连接状态恢复到正常-
EXECEXEC执行事务中所有在排队等待的指令并将链接状态恢复到正常-
MULTIMULTI标记一个事务块的开始。 随后的指令将在执行EXEC时作为一个原子执行。-
UNWATCHUNWATCH刷新一个事务中已被监视的所有key。-
WATCHWATCH key [key …]标记所有指定的key 被监视起来-

HYPERLOGLOG类型

命令名称命令操作命令描述时间复杂度
PFADDPFADD key element [element …]将元素添加到指定Key的HyperLogLog结构中-
PFCOUNTPFCOUNT key [key …]返回存储在HyperLogLog结构体的指定key的近似基数,如果该key不存在,则返回0.-
PFMERGEPFMERGE destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并(merge)为一个 HyperLogLog-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果丶果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值