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
posted @   立勋  阅读(7)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示