ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

Redis 五大基础数据结构,从场景到命令

Redis 五大基础数据结构,从场景到命令 Redis 是目前后端开发最常用的高性能内存数据库区别于 MySQL 关系型数据库Redis 是典型的Key-Value 结构化数据库。绝大多数日常开发、缓存场景。一、通用基础命令在学习具体结构前先掌握全局通用命令所有 Key 都可使用# 查看所有key仅本地开发调试生产禁用 keys * # 判断key是否存在1存在 / 0不存在 exists key # 删除指定key del key # 设置key过期时间单位秒 expire key 3600 # 查看key剩余过期时间 ttl key # 查看key的数据类型 type key # 清空当前数据库数据 flushdb # 清空所有数据库数据谨慎使用 flushall二、String 字符串最核心、最常用1. 结构特点String 是 Redis默认、最基础的数据结构单个 Value 最大支持 512MB。本质是动态字符串支持文本、数字、JSON 等所有通用数据格式也是使用场景最多的结构。2. 适用业务场景全局计数器访问量、点赞数、浏览量临时缓存用户 Token、验证码、登录态简单数值增减、分布式锁标识普通字符串、序列化后的 JSON 对象存储3. 核心实操命令# 新增/修改数据 set username zhangsan # 查询数据 get username # 不存在才设置分布式锁核心命令 setnx lock:order 1 # 设置数据 过期时间验证码场景 setex code 60 123456 # 数字自增、自减计数器核心 incr visit:count decr visit:count # 字符串追加 append username _vip # 获取字符串长度 strlen username三、Hash 哈希专属对象存储1. 结构特点Hash 是Key - Field - Value三层结构一个大 Key 下可以存储多个字段和对应值极其适合存储结构化数据相比 String 序列化 JSON支持单独修改某个字段无需整体更新。2. 适用业务场景用户信息、商品信息、订单信息等实体对象高频局部更新场景修改商品库存、用户昵称、价格结构化配置数据存储3. 核心实操命令# 批量设置对象字段 hset product:1001 name 华为手机 price 3999 stock 200 # 查询单个字段 hget product:1001 name # 批量查询指定字段 hmget product:1001 name price # 查询对象所有字段值最常用 hgetall product:1001 # 获取所有字段名、所有值 hkeys product:1001 hvals product:1001 # 字段数值增减库存扣减核心 hincrby product:1001 stock -1 # 删除单个字段 hdel product:1001 stock四、List 列表有序可重复队列1. 结构特点List 底层是双向链表元素有序、支持重复数据两头读写效率极高中间查询效率低。天然适配队列、栈的数据结构特性。2. 适用业务场景简单消息队列、任务队列用户浏览记录、操作日志栈、队列结构的数据存储3. 核心实操命令# 左侧插入栈头、右侧插入队尾 lpush list a b c rpush list d e # 查询所有元素0起始-1末尾 lrange list 0 -1 # 左侧弹出、右侧弹出队列消费 lpop list rpop list # 获取列表长度 llen list # 根据下标查询、修改元素 lindex list 1 lset list 1 hello五、Set 集合无序自动去重1. 结构特点Set 是无序、不可重复的元素集合自动去重支持交集、并集、差集等集合运算这是其他结构不具备的核心优势。2. 适用业务场景好友列表、粉丝列表、关注列表数据去重、标签归类共同好友、共同关注、相似度计算3. 核心实操命令# 添加集合元素 sadd user:friend:A u1 u2 u3 # 查询所有元素 smembers user:friend:A # 判断元素是否存在是否为好友 sismember user:friend:A u2 # 删除指定元素 srem user:friend:A u3 # 获取集合元素数量 scard user:friend:A # 集合运算交集、并集、差集 sinter user:friend:A user:friend:B # 共同好友 sunion user:friend:A user:friend:B # 全部好友 sdiff user:friend:A user:friend:B # A独有好友六、ZSet 有序集合排序神器1. 结构特点ZSetSorted Set有序集合元素唯一不可重复每个元素绑定一个 score分数Redis 自动根据分数排序是五大结构中唯一自带排序功能的结构。2. 适用业务场景各类排行榜游戏积分、热搜、销量、点赞榜延时任务、权重排序数据带权重的有序数据统计3. 核心实操命令# 添加元素 分数 zadd game:rank 100 playerA 88 playerB 120 playerC # 升序查询、降序查询排行榜优先用降序 zrange game:rank 0 -1 zrevrange game:rank 0 -1 # 降序查询并展示分数 zrevrange game:rank 0 -1 withscores # 增减分数 zincrby game:rank 20 playerA # 查询元素分数、排名 zscore game:rank playerA zrevrank game:rank playerA # 删除元素、统计总数 zrem game:rank playerB zcard game:rank七、五大结构核心场景总结数据结构核心特性核心业务场景String通用、支持数值增减计数器、缓存、验证码、TokenHash结构化、局部更新用户/商品/订单对象存储List有序、可重复、链表结构消息队列、浏览记录、日志Set无序、去重、集合运算好友、粉丝、数据去重ZSet唯一、自动排序各类排行榜、有序权重数据八、小结1、简单缓存、计数器用 String结构化对象优先用 Hash避免 JSON 序列化整体更新2、队列场景优先 List去重社交场景优先 Set排序场景固定用 ZSet3、所有临时数据务必设置expire 过期时间避免 Redis 内存溢出。
返回列表