Redis超详细入门教程

发布于:2025-09-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、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处理速度。


网站公告

今日签到

点亮在社区的每一天
去签到