(一)Redis 是什么?

(一)Redis 是什么?

Redis 这个从我 17 年实习开始就听过的中间件,日常项目也有在使用,但从没有整体的了解过。趁着现在有空闲时间,借助 AI 工具的便利,将 Redis 拆开了揉碎了学习一下。

Redis 简介:它是什么,有什么用?

维基百科介绍:redis

Redis(Remote Dictionary Server) 是一个开源的内存数据结构存储系统,可以用作数据库、缓存、消息代理和流处理器

它由意大利开发者 Salvatore Sanfilippo 创建,最早发布于 2009 年,目前由 Redis Inc.(前身 Redis Labs)主导维护,源码托管在 GitHub 上,使用 C 语言开发,性能极高。

Redis 的核心特点

  1. 数据存储到内存中,读写速度极快,可以达到 10w QPS

  2. 支持丰富的数据结构

    1. Set 集合
    2. List 累表
    3. Sort Set 有序集合
    4. Hash 哈希表
    5. String 字符串
  3. 数据支持持久化

    1. RDB [Redis DateBase](快照)
    2. AOF [Apply Only File](追加日志)
    持久化方式 是否默认 优点 缺点
    RDB 可读性高:存储的是一条条执行的命令,所以可以从任何一个时间节点进行数据恢复 文件体积大,恢复速度慢,对磁盘的 IO 依赖较高
    AOF 文件体积小,恢复速度快 快照形式保存,容易造成数据丢失。存储的是二进制文件,可读性低
  4. 多种高可用拓展方式

    1. 主从复制

    2. 哨兵模式(自动故障迁移)

    3. Cluster 模式(集群)支持大规模部署与数据分片

  5. 支持事务和 lua 脚本

  6. 轻量级、开源、跨平台

Redis 和 Memcached 对比

对比项 redis memcached
数据结构 五种数据结构 只支持 String,但是支持其他类型数据比如 图片等
数据持久化 支持 AOF 和 RDB 不支持数据持久化
过期策略 支持数据提交后修改 数据创建时设置,不支持修改
发布订阅 支持 不支持
脚本操作 支持 Lua 脚本 不支持
原子操作 可以基于 Lua脚本编写丰富的操作 基础原子性操作

Redis 的常见应用场景

  • 缓存系统:页面、热点数据缓存
  • 分布式锁:基于 SETNX + 过期时间实现
  • 计数系统:使用 INCR 和 DECR 实现
  • 排行榜数据缓存: 使用 有序的 SET 实现
  • 消息队列: 基于 List 或者 Stream 实现
  • 会话共享: 在分布式系统中共享登录状态信息

快速上手 Redis

中文文档

  • 如何安装:文档

    • 常见 Docker 安装:

      1
      docker run -p 6379:6379 redis
  • 客户端连接:redis-cli

  • 基础命令:SET、GET、DEL、EXPIRE 等