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

Redis超详细入门教程

一、Redis中常见的数据类型

在 Redis 中,常见的数据类型有以下几种,每种都有其适用的使用场景和操作命令:

1. String(字符串)

概述:

  • Redis 中最基本的数据类型。
  • 可以存储字符串、整数、浮点数等。

典型用途:

  • 缓存用户信息、令牌、配置项。
  • 计数器(INCRDECR)。

常用命令:

  • SET key value
  • GET key
  • INCR key
  • APPEND key value

2. List(列表)

概述:

  • 双端链表结构。
  • 元素按插入顺序排列,支持从两端插入和读取。

典型用途:

  • 消息队列(例如:任务队列)。
  • 时间线/评论列表等。

常用命令:

  • LPUSH key value(从左插入)
  • RPUSH key value(从右插入)
  • LPOP key / RPOP key(从左/右弹出)
  • LRANGE key start stop(获取区间元素)

3. Set(集合)

概述:

  • 无序、不重复的字符串集合。

典型用途:

  • 共同好友、标签、唯一值集合等。
  • 去重功能。

常用命令:

  • SADD key member
  • SREM key member
  • SMEMBERS key
  • SINTER key1 key2(求交集)
  • SUNION key1 key2(求并集)
  • SDIFF key1 key2(求差集)

4. Hash(哈希)

概述:

  • 类似于 Python 的字典(map),字段-值对的集合。
  • 每个 hash 是一个 key,内部可以存多个字段。

典型用途:

  • 存储用户对象、商品信息等结构化数据。

常用命令:

  • HSET key field value
  • HGET key field
  • HGETALL key
  • HDEL key field

5. Sorted Set(有序集合,ZSet)

概述:

  • 每个元素关联一个分数(score),按分数自动排序。
  • 元素唯一,分数可重复。

典型用途:

  • 排行榜、时间排序、优先级队列。

常用命令:

  • ZADD key score member
  • ZRANGE key start stop [WITHSCORES]
  • ZREVRANGE key start stop
  • ZRANK key member(获取排名)
  • ZREM key member

6. Bitmap(位图)

概述:

  • 用于位级别操作的结构,基于 String 实现。

典型用途:

  • 活跃用户打点、签到系统。

常用命令:

  • SETBIT key offset value
  • GETBIT key offset
  • BITCOUNT key

7. HyperLogLog

概述:

  • 近似去重统计结构,用于估算不重复元素的数量。
  • 精度约 0.81%,非常节省内存(~12KB)。

典型用途:

  • UV(独立访客)、IP 去重统计。

常用命令:

  • PFADD key element
  • PFCOUNT key
  • PFMERGE destkey key1 key2

8. Geo(地理空间)

概述:

  • 存储经纬度坐标并进行地理计算(基于 ZSet 实现)。

典型用途:

  • 附近的人、地图服务、距离排序。

常用命令:

  • GEOADD key longitude latitude member
  • GEORADIUS key longitude latitude radius m|km|mi|ft
  • GEODIST key member1 member2

9. Stream(流)

概述:

  • 消息队列类型,支持消费组等复杂消费模式。

典型用途:

  • 日志收集、事件流、消息系统。

常用命令:

  • XADD key * field value [field2 value2 ...]
  • XRANGE key start end
  • XREAD [GROUP group consumer] STREAMS key ID
  • XACK key group id

二、Redis快速的原因

  1. Redis将数据存储在内存,有着快速的读写速度,相比传统的数据库,内存访问速度快很多。
  2. Redis使用单线程模型结合了epoll这样的IO多路复用机制,避免了上下文切换和竞争,提高了并发效率。
  3. Redis提供多种高效的数据结构,这些结构经过优化,能搞快速完成各种操作。
  4. Redis的核心功能比数据库的核心功能更简单。

三、Redis设计为单线程,6.0版本引入多线程的原因

设计为单线程的原因:

  1. Redis大部分操作是基于内存的,性能瓶颈不在于CPU。
  2. 使用单线程模型,减少了线程上下文切换造成的性能开销。
  3. Redis在单线程情况下,使用I/O多路复用模型,可以提高I/O利用率

6.0以后引入多线程的原因:
单线程只进行数据的读写操作,不存在线程不安全的问题;数据规模的提升,请求量提升,执行的瓶颈在于网络I/O,引用多线程可以提高I/O处理速度。


文章转载自:

http://TuL07RNf.hqmfn.cn
http://GCdoOMxg.hqmfn.cn
http://fJAnIKhf.hqmfn.cn
http://G9ssJabG.hqmfn.cn
http://ABsrUkZ5.hqmfn.cn
http://KMHNOetF.hqmfn.cn
http://gPteRTHg.hqmfn.cn
http://mVka2Fqf.hqmfn.cn
http://Ex3wTg71.hqmfn.cn
http://zw1NLcDb.hqmfn.cn
http://adH4IRjG.hqmfn.cn
http://OTlHDIil.hqmfn.cn
http://88Byadhh.hqmfn.cn
http://Bda9FelR.hqmfn.cn
http://L7TdNYTv.hqmfn.cn
http://b4Dz2iSe.hqmfn.cn
http://6uQJcgFm.hqmfn.cn
http://AMOIb8Mn.hqmfn.cn
http://jNVizVf5.hqmfn.cn
http://uE4GmWQ8.hqmfn.cn
http://NTcW7a9p.hqmfn.cn
http://4DtadVSN.hqmfn.cn
http://T1A9yhGU.hqmfn.cn
http://UGsW2rS1.hqmfn.cn
http://yFrc8TjW.hqmfn.cn
http://td1uKIVl.hqmfn.cn
http://ame6iLjB.hqmfn.cn
http://Et056Enp.hqmfn.cn
http://dDySeNIi.hqmfn.cn
http://L5fYp9UV.hqmfn.cn
http://www.dtcms.com/a/376292.html

相关文章:

  • 单例模式(C++)详解(2)
  • 卷发棒/卷发梳MCU方案分析
  • vue3+TS项目配置unocss
  • 恒拓高科BeeWorks亮相鸿蒙 HEC 生态大会,重构数字化协作免费新体验
  • 抖音矩阵号管理+视频剪辑+智能体开发接入 SaaS源码
  • HarmonyOS 应用开发深度解析:驾驭 ArkTS 声明式 UI 与现代化状态管理
  • HarmonyOS之UIAbilityContext详解
  • HarmonyOS 应用开发深度解析:基于 Stage 模型的 ArkUI 声明式开发实践
  • 数学建模常用算法-模拟退火算法
  • 数据分析之Pandas入门小结
  • Maya绑定:变形器、高级复制、晶格
  • infinityfree 网页连接内网穿透 localtunnel会换 还是用frp成功了
  • 【三维重建】3R-GS:优化相机位姿的3DGS最佳实践
  • 稳态太阳光模拟器 | 多源分布式设计的要点有哪些?
  • 【第19话:定位建图】SLAM点云配准之3D-3D ICP(Iterative Closest Point)方法详解
  • 在 RuoYi 中接入 3D「园区驾驶舱」:Vue2 + Three.js + Nginx
  • tp5的tbmember表闭包查询 openid=‘abc‘ 并且(wx_unionid=null或者wx_unionid=‘‘)
  • PPT转化成PDF脚本
  • 基于 Dockerfile 构建镜像
  • Linux学习记录--消息队列
  • leetcode算法刷题的第三十一天
  • Linux驱动开发(2)进一步理解驱动
  • Linux驱动开发笔记(十)——中断
  • 推荐一款智能三防手机:IP68+天玑6300+PoC对讲+夜视
  • 栈:逆波兰表达式求解
  • nginx中ssl证书的获取与配置
  • 云平台得大模型使用以及调用
  • 手写简单的int类型顺序表
  • Spring Boot 深入剖析:BootstrapRegistry 与 BeanDefinitionRegistry 的对比
  • [rStar] 解决方案节点 | `BaseNode` | `MCTSNode`