Redis九种类型的方法及其时间复杂度
-
set key value O(1)
-
设置key对应string类型的值,返回1表示成功,0失败。
-
-
setnx key value O(1)
-
如果key不存在,设置key对应string类型的值。如果key已经存在,返回0。
-
-
get key O(1)
-
获取key对应的string值,如果key不存在返回nil。
-
-
getset key value O(1)
-
将给定 key 的值设为 value ,并返回 key 的旧值。
-
-
mget key1 ...... keyN O(n)
-
一次获取多个key的值,如果对应key不存在,则对应返回nil。
-
-
mset key1value1 ...... keyN valueN O(n)
-
一次设置多个key的值,成功返回1表示所有的值都设置了,失败返回0表示没有任何值被设置。
-
-
msetnx key1 value1 ...... keyN valueN O(n)
-
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
-
-
decr key O(1)
-
对key的值做--操作,decr一个不存在key,则key值为-1。
-
-
incrby key increment O(1)
-
对key加上指定值,key不存在时候会设置key,并认为原来的value 是0。
-
-
decrby key decrement O(1)
-
对key减去指定值。decrby是为了可读性,可以通过incrby一个负值来实现同样效果。
-
hash类型
-
hset key field value O(1)
-
设置hash field为指定值,如果key不存在,则创建。
-
-
hget key field O(1)
-
获取指定的hash field。
-
-
hmget key filed1....fieldN O(n)
-
获取全部指定的hash filed。
-
-
hmset keyfiled1 value1 ...... filedN valueN O(n)
-
同时设置hash的多个field。
-
-
hincrby key field increment O(1)
-
将指定的字段加上指定值。成功返回hashfiled变更后的值。
-
-
hexists key field O(1)
-
检测指定field是否存在。 hdelkey field 删除指定的hash field。
-
-
hlen key O(1)
-
返回指定hash的field数量。 hkeys key 返回hash的所有字段。
-
-
hvals key O(n)
-
返回hash的所有value。
-
-
hgetall O(n)
-
返回hash的所有filed和value。
-
List类型
-
lpush key value O(n)
-
在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型。
-
-
rpush key value O(1~n)
-
在key对应list的尾部添加字符串元素。
-
-
llen key O(1)
-
返回key对应list的长度,如果key不存在返回0。
-
-
lrange key start stop O(n)
-
返回指定区间内的元素,下标从0开始,负值表示从后面计算,-1表示倒数第一个元素 ,key不存在返回空列表。
-
-
ltrim key start stop O(n)
-
截取list指定区间内元素,成功返回1。
-
-
lset key index value O(n)
-
通过索引设置列表元素的值。
-
-
lrem key count value O(n)
-
从 List 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。count为0时候删除全部。
-
-
lpop key O(1)
-
从list的头部删除并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误。
-
-
rpop key O(1)
-
从list的尾部删除并返回删除元素。
-
-
blpop,brpop O(1)
-
头部尾部删除。 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
-
Set类型
-
sadd key member O(n)
-
添加一个string元素到key对应set集合中,成功返回1,如果元素以及在集合中则返回0。
-
-
srem key member O(n)
-
从key对应set中移除指定元素,成功返回1。
-
-
scard key O(1)
-
返回set的元素个数。
-
-
srandmember key O(n)
-
同spop,随机取set中的一个元素,但是不删除元素。
-
-
spop key O(n)
-
删除并返回key对应set中随机的一个元素。
-
-
sunion key1 key2 ...... keyN O(n)
-
返回所有给定key的并集。
-
-
sdiff key1 key2 ...... keyN O(n)
-
返回第一个集合与其他集合之间的差集。
-
-
smembers key O(n)
-
返回集合中的所有元素,结果是无序的。
-
-
sinter key1 key2 …… keyN O(n)
-
返回所有给定key的交集。
-
-
sinterstore dst key1 ....... keyN O(n)
-
返回所有给定key的交集,并保存交集存到dst下。
-
Sorted Set类型
-
zadd key score member O(m*log(n))
-
添加元素到集合,元素在集合中存在则更新对应score。
-
-
zrem key member O(m*log(n))
-
删除指定元素,1 表示成功,如果元素不存在返回 0。
-
-
zrevrank key member O(log(n))
-
返回有序集合中指定成员的排名,集合中元素是从大到小排序。
-
-
zrange key start stop O( log(n)+ m)
-
通过索引区间返回有序集合指定区间内的成员。
-
-
zrevrange key start stop O(log(n))
-
返回有序集中指定区间内的成员,返回结果是逆序的。
-
-
zcount key min max O( log(n)+ m)
-
返回集合中在给定区间的数量。
-
-
zcard key O(1)
-
返回集合中元素个数。
-
-
zscore key element O(1)
-
返回给定元素对应的 score。
-
-
zremrangebyrank key start stop O( log(n)+ m)
-
删除集合中排名在给定区间的元素。
-
-
zremrangebyscore key min max O( log(n)+ m)
-
删除集合中 score 在给定区间的元素。
-
Geo类型
-
geoapdd key longitude latitude member [longitude latitude member ...] O(log(N))
-
将给定的空间元素(纬度、经度、名字)添加到指定的键里面。
-
-
geopos key member [member ...] O(log(N))
-
从键里面返回所有给定位置元素的位置(经度和纬度)。
-
-
geodist key member1 member2 [unit] O(log(N))
-
返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。
-
-
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count] O(N+log(M))
-
以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
-
HyperLogLog类型
-
pfmerge destkey sourcekey [sourcekey ...] O(N)
-
将多个 HyperLogLog 合并为一个 HyperLogLog
-
-
pfadd key element [element ...] O(1)
-
添加指定元素到 HyperLogLog 中。
-
-
pfcount key [key ...] O(1)
-
返回给定 HyperLogLog 的基数估算值。
-
BitMap类型
-
setbit key offset value O(1)
-
设置或修改key上的偏移量(offset)的位(value)的值。
-
-
getbit key offset O(1)
-
查询key所存储的字符串值,获取偏移量上的位。
-
-
bitcount key [start] [end] O(N)
-
计算给定key的字符串值中,被设置为1的位bit的数量
-
-
bitop and destkey key [key...] O(N)
-
对一个或多个key逻辑并,结果保存到destkey。
-
Stream类型
-
xadd stream id field value [field value ...] O(1)
-
添加元素到末尾。
-
-
xtrim steam maxlen len O(N)
-
对流进行修剪,限制长度。
-
-
xdel stream [id id ... id] O(1)
-
移除指定元素,返回值是被移除的元素的数量。
-
-
xlen stream O(1)
-
获取流包含的元素数量。
-
-
xrange key start end [COUNT count] O(N)
-
XRANGE 获取消息列表,会自动过滤已经删除的消息。
-
-
xread [COUNT count] [BLOCK milliseconds] streams key [key ...] id [id ...] O(N)
-
使用 XREAD 以阻塞或非阻塞方式获取消息列表 。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下