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

Redis-基本数据类型

Redis支持的基本数据类型:String、hash、list、Set、Zset

一、String

  • 特点

    • 可以存储三种类型 int、float、string
  • 运用场景

    • 缓存:存储HTML片段、用户会话(Session)
    • 计数器:网站访问量、点赞数(incr方法)。允许一定的延迟,先写入Redis再定时同步到数据库
    • 限流:以访问者的IP和其他信息作为KEY,访问一次增加一次技术,超过次数返回false
    • 分布式锁:通过SETNX实现简单锁机制。

二、Hash

  • 特点:
    • Hash用来存储多个无序的键值对。最大存储数量2^32 - 1 (40亿左右)
    • 键值对集合,适合存储对象(如用户信息)。
    • 支持单独操作某个字段(如 HSET user:1 age 30),避免序列化整个对象。
    • 底层使用压缩列表(小数据)或哈希表(大数据),内存高效。
  • 优点:
    •  把所有相关的值都聚集到一个key中,节省内存空间
    • 只是用一个key,减少key冲突
    • 当需要批量获取值的时候,只需要使用一个命令,减少内存/IO/CPU的消耗
  • 缺点:
    • Field 不能单独设置过期时间
    • 需要考虑数据量分布的问题(field非常多的时候,无法分布到多个节点)
  • 使用场景
    • String能做的Hash都能做
    • 对象存储:用户信息、商品详情(字段可部分更新)。

    • 配置管理:系统配置项按组存储,便于批量获取。

        

三、List

  • 特点
    • 基于双向链表实现,支持在头部和尾部快速 插入/删除元素(时间复杂度 O(1))。
    • 元素可以重复,按插入顺序排列。
    • 可以通过索引访问,但是中间操作效率低(时间复杂度O(n))。
  • 常用命令
    • lpush + lpop = Stack (栈)
    • lpush + rpop = Queue (队列)
    • lpush + ltrim = Capped Collection (有限集合)
    • lpush + brpop = Message Queue (消息队列)
  • 阻塞的弹出操作:blpop / brpop,可以设置超时时间(单位:秒)
    • blpop:blpop key1 timeout,移除并获取列表第一个元素,如果列表没有元素会阻塞列表,直到等待超时发现可弹出元素为止。
    • brpop:brpop key1 timeout,移除并获取列表最后一个元素,如果列表没有元素会阻塞列表,直到等待超时发现可弹出元素位置。
  • 使用场景
    • 消息队列生产者通过 lpush 推送消息,消费者通过 rpop 拉取(需轮询,建议使用Stream类型代替。
    • 最新动态:存储用户的最新文章、评论(如 lpush+ltrim 保持固定长度)。
    • 阻塞队列:使用 blpop / brpop 实现阻塞式读取。

四、Set

  • 特点:
    • 无序 且 元素唯一(自动去重)
    • 支持集合运算(交集-sinter、并集-sunion、差集-sdiff)
    • 查询元素是否存在 - 时间复杂度为O(1)。
  • 使用场景

    • 标签系统:用户兴趣标签(SADD user:1:tags tag1 tag2)。


    • 唯一性约束:统计文章的唯一阅读用户。点赞、签到、打卡。


    • 社交关系:共同关注(交集)、可能认识的人(差集)。

五、有序集合-Zset

  • 特点
    • 元素唯一,每个元素关联一个score(分数)用于排序
    • 按 score 升序排列,支持范围查询(如 ZrangeByScore)。
    • 底层使用跳跃表哈希表,保证高效查询和排序。
  • 使用场景
    • 排行榜:游戏积分排名、热搜榜(按score排序)。
    • 延迟队列:将任务到期时间作为score,定时轮询获取到期任务。
    • 带权重的队列:优先处理高优先级的任务。

相关文章:

  • 基于VMware的Cent OS Stream 8安装与配置及远程连接软件的介绍
  • 【7】基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95
  • NXP iMX8MP ARM 平台 EMQX 部署测试
  • C++自学笔记---数组和指针的异同点
  • 【11408学习记录】考研英语长难句解析 | 语法拆分+写作模板+真题精讲(附高分秘籍)
  • HTML5图片裁剪工具实现详解
  • LeetCode18四数之和
  • 【Redis】数据的淘汰策略
  • linux磁盘创建分区
  • 开源协议指南:主流许可证核心区别解析
  • 基于javaweb的SpringBoot汉服文化bbs系统设计与实现(源码+文档+部署讲解)
  • “Pseudo Global Warming”:伪全球变暖PGW
  • Diffusion-Based Planning for Autonomous Driving with Flexible Guidance论文细读
  • 【奇点时刻】GPT4o新图像生成模型底层原理深度洞察报告
  • 【Leetcode 994】腐烂的橘子 - 多源 BFS 解题思路与 Java 实现详解
  • Master节点重启k8s集群崩溃解决办法
  • AGI大模型(10):prompt逆向-巧借prompt
  • Windows 系统下安装 Docker
  • 构建网络 练习题三道
  • idea快捷键 Spring endpoint actions in the editor
  • 服装行业网站建设及推广/搜索引擎优化专员
  • 安阳百度网站制作多少钱/海外域名
  • 南京网站开发南京乐识专注/商品seo优化是什么意思
  • 第9区在线观看完整版/seo外贸公司推广
  • h5商城网站开发/百度的营销中心上班怎么样
  • 泰安网络诈骗案件/seo优化排名工具