Redis02-数据结构和命令
1.redis实战
redis五种数据类型
字符串 列表 字典 集合 有序集合(zset)
字符串
可以存储字节串,整数,浮点数
可以对存储着整数或浮点数的字符串执行自增和自减操作
如果对不存在的键或保存了空串的键执行自增减操作,键值被当做0处理
自增和自减命令
INCR | INCR key_name | 将键存储的值加1 |
---|---|---|
DECR | DECR key_name | 将键存储的值减1 |
INCRBY | INCRBY key_name number | 键值按number自增 |
DECRBY | DECRBY key_name number | 键值按number自减 |
INCRBYFLOAT | INCRBYFLOAT key_name number | 键值按浮点数number自增 |
处理子串和二进制位的命令
APPEND | APPEND key_name value | 向key_name的末尾追加value |
---|---|---|
GETRANGE | GETRANGE key_name start end | 获取偏移量之间的子串,包括起止 |
SETRANGE | SETRANGE key_name offset value | 将指定偏移量的子串设置为给定值 |
GETBIT | GETBIT key_name offset | 将字节串看做是二进制位串,并返回指定偏移量位置上的二进制值 |
SETBIT | SETBIT key_name offset value | 将指定偏移量位置上的二进制值设置为value |
BITCOUNT | BITCOUNET key_name [start end] | 统计二进制位串中1的数量 |
BITOP | BITOP operation dest_key key_name [key_name ...] | 对一个或多个二进制位串执行AND,OR,XOR(异或),NOT在内的任意一种按位操作,结果写入dest_key中 |
列表
有序,元素可重复
RPUSH | RPUSH key_name value [value...] | 将一个或多个值推入列表右端 |
---|---|---|
LPUSH | RPUSH key_name value [value...] | 将一个或多个值推入列表左端 |
RPOP | RPOP key_name | 移除并返回列表最右端的元素 |
LPOP | LPOP key_name | 移除并返回列表最左端的元素 |
LINDEX | LINDEX key_name offset | 返回列表中指定偏移量的元素 |
LRANGE | LRANGE key_name start end | 返回列表指定范围内的元素,包括起止 |
LTRIM | LTRIM key_name start end | 只保留指定范围内的元素,包括起止,其他删除 |
阻塞与移动元素的命令
BLPOP | BLPOP key_name [key_name...] timeout | 从第一个非空列表中弹出最左端的元素,没有就在timeout秒内阻塞直至可弹出元素出现 |
---|---|---|
BRPOP | BRPOP key_name [key_name...] timeout | 同上 |
RPOPLPUSH | RPOPLPUSH source_key dest_key | 从source_key 列表中弹出最右端元素,并加入dest_key列表的最左端,并返回这个元素 |
BRPOPLPUSH | BRPOPLPUSH source_key dest_key timeout | 同上,如果source_key为空,在timeout秒内阻塞直至可弹出元素出现 |
集合
无序,元素不可重复
SADD | SADD key_name item [item ...] | 将一个或多个元素加入集合,并返回所添加元素不存在原集合中的数量 |
---|---|---|
SREM | SREM key_name item [item ...] | 从集合中移除一个或多个元素,并返回被移除元素数量 |
SISMEMBER | SISMEMBER key_name item | 检查元素是否在集合中 |
SCARD | SCARD key_name | 返回集合元素数量 |
SMEMBERS | SMEMBERS key_name | 返回集合包含的所有元素 |
SRANDMEMBER | SRANDMEMBER key_name [count] | 从集合中随机返回一个或多个元素,count为正数,返回元素不会重复,count为负数,返回元素可能重复 |
SPOP | SPOP key_name | 随机从集合中移除一个元素,并返回 |
SMOVE | SMOVE source_key dest_key item | 如果source_key中包含item,则移除并添加到dest_key中,如果item被成功移除返回1,否则0 |
组合和处理多个集合的redis命令
SDIFF | SDIFF key_name [key_name...] | 返回存在于第一个集合中但不存在于其他集合中的元素 |
---|---|---|
SDIFFSTORE | SDIFFSTORE dest_key key_name [key_name ...] | 将存在于第一个集合中但不存在于其他集合中的元素存储到dest_key键中 |
SINTER | SINTER key_name [key_name...] | 返回同时存在有所有集合中的元素 |
SINTERSTORE | SINTERSTORE dest_key key_name [key_name ...] | 返回后存入dest_key键中 |
SUNION | SUNION key_name [key_name ...] | 返回至少存在于一个集合中的元素 |
SUNIONSTORE | SUNIONSTORE dest_key key_name [key_name...] | 返回后存入dest_key键中 |
散列
可以让用户将多个键值对存储到一个redis键里面
可以将散列理解为关系型数据库表中的行
HMGET | HMGET key_name key [key...] | 获取散列中一个或多个键的值 |
---|---|---|
HMSET | HMSET key_name key value [key value] | 为散列中一个或多个键设置值 |
HDEL | HDEL key_name key [key...] | 删除散列中的一个或多个键值对,返回成功找到并删除的键值对数量 |
HLEN | HLEN key_name | 返回散列中包含的键值对数量 |
HEXISTS | HEXISTS key_name key | 检查给定的键是否存在于散列中 |
---|---|---|
HKEYS | HKEYS key_name | 获取散列中所有的键 |
HVALS | HVALS key_name | 获取散列中所有的值 |
HGETALL | HGETALL key_name | 获取散列中所有的键值 |
HINCRBY | HINCRBY key_name key increment | 将key键存储的值加上increment |
HINCRBYFLOAT | HINCRBYFLOAT key_name key increment | 将key键存储的值加上浮点数increment |
有序集合
用分值和元素做映射
ZADD | ZADD key_name score member [score member ...] | 将带有分值的元素添加到有序集合中 |
---|---|---|
ZREM | ZREM key_name member [member ...] | 从有序集合中移除指定元素,返回被移除数量 |
ZCARD | ZCARD key_name | 返回有序集合包含的成员数量 |
ZINCRBY | ZINCRBY key_name increment member | 将member成员的分值加上increment |
ZCOUNT | ZCOUNT key_name min max | 返回分值介于min和max之间的成员数量 |
ZRANK | ZRANK key_name member | 返回成员member在有序集合中的排名 |
ZSCORE | ZSCORE key_name member | 返回成员member的分值 |
ZRANGE | ZRANGE key_name start stop [WITHSCORES] | 返回指定排名之间的成员,如果给定了withscores参数,那么命令会将成员的分值一并返回 |
ZREVRANK | ZREVRANK key_name member | 返回有序集合中成员member的排名,降序 |
---|---|---|
ZREVRANGE | ZREVRANGE key_name start stop [WITHSCORES] | 返回指定排名范围内的成员,降序 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回有序集合中指定分值范围内的成员 |
ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] | 返回有序集合中指定分值范围内的成员,降序 |
ZREMRANGEBYRANK | ZREMRANGEBYRANK key_name start stop | 移除有序集合中指定排名范围内的所以成员 |
ZREMRANGEBYSCORE | ZREMRANGEBYSCORE key_name min max | 移除有序集合中指定分值范围内的所以成员 |
ZINTERSTORE | ZINTERSTORE dest_key key_count key [key ...] [WEIGHTS weight [weight...]] [AGGREGATE SUM | MIN |
ZUNIONSTORE | ZUNIONSTORE dest_key key_count key [key ...] [WEIGHTS weight [weight...]] [AGGREGATE SUM | MIN |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)