当前位置: 首页 > news >正文

Redis常用数据结构和应用场景

一、前言

  • Redis提供了多种数据结构,每种结构对应不同的应用场景。
  • 本文对部分常用的核心数据结构和典型使用场景作出介绍。

二、String(字符串)

  • 特点:二进制安全,可存储文本、数字、序列化对象等。
  • 场景
    • 缓存:存储Session、Token、图片地址等。
    • 计数器:文章阅读量(INCR)、秒杀库存(DECR)。
    • 分布式锁:SETNX实现简单锁(需结合过期时间)。
    • 示例命令:
SET user:1001 "{\"name\":\"Alice\",\"age\":25}"
INCR article:1001:views

三、Hash(哈希表)

  • 特点:键值对集合,适合存储对象。
  • 场景
    • 对象存储:用户信息(字段独立更新)、商品详情。
    • 购物车:以用户ID为Key,商品ID为Field,数量为Value。
    • 示例命令:
HSET user:1001 name Alice age 25
HINCRBY cart:1001 product:2001 1

四、List(列表)

  • 特点:双向链表,支持栈/队列操作。
  • 场景: 消息队列:简单任务队列(LPUSH+BRPOP)。
    • 最新动态:朋友圈时间线(存储最新N条动态)。
    • 示例命令:
LPUSH feed:1001 "New post: Redis guide"
LRANGE feed:1001 0 4  # 查看前5条动态

五、Set(集合)

  • 特点:无序且唯一元素,支持交并差运算。
  • 场景
    • 标签系统:用户兴趣标签(共同关注:SINTER)。
    • 抽奖/黑名单:去重存储(如抽奖用户ID)。
    • 示例命令:
SADD user:1001:tags tech database
SINTER user:1001:tags user:1002:tags  # 共同兴趣

六、Sorted Set(有序集合)

  • 特点:元素按Score排序,支持范围查询。
  • 场景
    • 排行榜:游戏积分排名(ZREVRANGE)。
    • 延迟队列:按时间戳排序处理任务。
    • 示例命令:
ZADD leaderboard 5000 "PlayerA" 4800 "PlayerB"
ZREVRANGE leaderboard 0 9 WITHSCORES  # 前10名

七、拓展结构

在这里插入图片描述


八、使用建议

  • 内存优化:小对象优先用Hash(比多个String更省内存)。
  • 性能考量:高频写入场景慎用大Key(如长List/Hash)。
  • 集群限制:集群模式下慎用跨节点操作(如Set交并差)。
  • 通过合理选择数据结构,可以显著提升Redis的性能和资源利用率

相关文章:

  • spring 服务调用中 RestTemplate vs OpenFeign 对比详解
  • CE、NCE、InfoNCE的演变过程
  • Vue3内置组件Teleport
  • SSM智能卤菜销售平台
  • es6学习02-let命令和const命令
  • Python operator模块itemgetter函数介绍
  • fastadmin后端添加页面,自主控制弹出框关闭,关闭父页面弹框
  • LeetCode 解题思路 37(Hot 100)
  • #MES系统运维问题分析思路
  • leaflet 之 获取中国某个行政区的经纬度边界(latLngBounds)
  • HBuilderX 开发的uniapp项目在微信开发者工具中调试运行
  • 问题 | 对于初学者来说,esp32和stm32哪个比较适合?
  • 【差分隐私相关概念】基础合成定理和高级合成技术简单关系
  • TASKING LSL EXAMPLE FOR TRICORE TC397XP
  • Linux: 进程认识(组织进程)
  • rapidocr 2.0 在线demo来了
  • 罗德与施瓦茨FSH3手持式频谱分析仪FSH8
  • 一致性哈希+虚拟节点 布隆过滤器
  • 【JVM】运行时数据区域
  • Linux:进程理解1(查看进程,创造进程,进程状态)
  • 做网站都需要什么人团/百度pc网页版登录入口
  • 建材在哪些网站做/商丘优化公司
  • 成都工程网站建设/seo技术好的培训机构
  • 全球最好的设计网站/直通车怎么开
  • 招聘网站html模板/网站推广途径
  • 北京医疗网站建设/免费建站的网站哪个好