redis学习总结(二)
参考:
https://blog.csdn.net/jy02268879/article/details/81447860
https://www.cnblogs.com/woods1815/p/13287724.html
目录:
zset有序集合命令及时间复杂度
setex、setnx、set、getset 命令的区别与使用
redis数据结构之zset有序集合,命令及时间复杂度
zset有序集合,元素不重复。
可用于排行榜(新旧程度排名,score可以用时间戳)。
结构
key score value
rank 15 a
35 b
28 c
94 d
8 e
跟普通的set比起来,每一个element都多了一个score。score可以重复,element不能重复。
集合内命令
zadd key score element 向有序集合中添加score和element 时间复杂度 o(logN)
zscore key element 获取element的分数 时间复杂度o(1)
zincrby key increScore element 自增element的分数 时间复杂度o(1)
zcard key 返回有序集合中元素的个数 时间复杂度o(1)
zrank key element 获取元素排名,下标从0开始
ZREVRANK key member 获取元素排名,倒叙
zrange key start end [withscores] 查询有序集合成指定排名区间内的成员,下标从0开始 时间复杂度o(log(n)+m)
zrevrange key start stop [withscores] 查询有序集合成指定排名区间内的成员,倒叙,下标从0开始
zrangebyscore key minScore maxScore [withscores] 查询有序集合指定分数区间内的成员 时间复杂度o(log(n)+m)
zrevrangebyscore key maxScore minScore [withscores] 查询有序集合指定分数区间内的成员,倒叙
zcount key minScore maxScore 计算在有序集合中指定分数区间的成员数 时间复杂度o(log(n)+m)
zrem key element 删除有序集合中的element 时间复杂度o(1)
zremrangebyrank key start end 移除有序集合中给定的排名区间的所有成员,从0开始 时间复杂度o(log(n)+m)
zremrangebyscore key minScore maxScore 移除有序集合中给定的分数区间的所有成员 时间复杂度o(log(n)+m)
集合间命令
ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
redis 中setex、setnx、set、getset 命令的区别与使用
介绍几个常用的redis命令:
SET 命令
set key value
设置指定 key 的值为 value。
如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
127.0.0.1:6379> set testSetKey aaa OK 127.0.0.1:6379> get testSetKey "aaa" 127.0.0.1:6379> set testSetKey bbb # 会覆写旧值 OK 127.0.0.1:6379> get testSetKey "bbb"
SETEX 命令
setex key seconds value
设置指定 key 的值为 value,并将 key 的过期时间设为 seconds (以秒为单位)。
如果 key 已经存在, SETEX 命令将会替换旧的值。
127.0.0.1:6379> setex testSetexKey 60 aaa # 设置过期时间为60秒 OK 127.0.0.1:6379> get testSetexKey # 有效期内获取 "aaa" 127.0.0.1:6379> get testSetexKey # 时间过期后再次获取返回 nil (nil) 127.0.0.1:6379> setex testSetexKey 60 aaa OK 127.0.0.1:6379> get testSetexKey "aaa" 127.0.0.1:6379> setex testSetexKey 60 bbb # 替换旧值 OK 127.0.0.1:6379> get testSetexKey "bbb"
SETNX 命令
setnx key value
设置指定 key 的值为 value,只有在 key 不存在时设置 key 的值。
setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
设置成功,返回 1 。 设置失败,返回 0 。
127.0.0.1:6379> setnx testSetnxKey aaa (integer) 1 127.0.0.1:6379> get testSetnxKey "aaa" 127.0.0.1:6379> setnx testSetnxKey bbb # 当key值存在时,返回0 (integer) 0 127.0.0.1:6379> get testSetnxKey "aaa"
GETSET 命令
getset key value
设置指定 key 的值为 value,并返回 key 的旧值(old value)。
返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。
当 key 存在但不是字符串类型时,返回一个错误。
127.0.0.1:6379> getset testGetsetKey aaa # 没有旧值时,返回 nil (nil) 127.0.0.1:6379> get testGetsetKey "aaa" 127.0.0.1:6379> getset testGetsetKey bbb # 返回旧值 "aaa" 127.0.0.1:6379> get testGetsetKey "bbb"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用