Lecture01-Redis-简介与安装

文章目录

    [toc]

    单词词性音标含义
    open sourcen./ˌəʊpən ˈsɔːs/开源的(Redis 基于 BSD 协议开源,源代码公开可查看修改)
    in-memoryadj./ˌɪn ˈmeməri/内存中的(数据存内存,读写远快于磁盘数据库)
    data structuren./ˈdeɪtə ˈstrʌktʃə(r)/数据结构(string、hash、list、set、zset 等)
    storev./stɔː(r)/存储(Redis 可作数据库、缓存、消息中间件)
    cachen./kæʃ/缓存(临时存储高频访问数据,减少对后端数据库的压力)
    message brokern./ˈmesɪdʒ ˈbrəʊkə(r)/消息代理(转发消息的中间件,Redis 可充当简单消息代理)
    compilev./kəmˈpaɪl/编译(把源码翻译成机器可执行程序的过程)
    daemonn./ˈdiːmən/守护进程(后台运行的服务进程)
    protectedadj./prəˈtektɪd/受保护的(Redis 的保护模式配置,默认仅允许本地连接)

    Lecture01-Redis-简介与安装

    1、Redis 简介

    1、Redis 是什么

    Redis(REmote DIctionary Server,远程字典服务)是一个开源(BSD 许可)、基于内存的数据结构存储系统,常被用作数据库、缓存、消息中间件。

    官方一句话描述:

    Redis is an open source, in-memory data structure store, used as a database, cache and message broker. It supports strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, geospatial indexes and streams.

    redis-arch

    • 内存存储:数据存在内存,读写极快(官方参考:GET 约 11 万次/秒,SET 约 8 万次/秒)。
    • 键值结构:key-value,value 支持多种数据结构。
    • 开发语言:ANSI C,轻量、跨平台。
    • 远程访问:默认监听 6379 端口,支持各种语言客户端。

    2、NoSQL 三剑客

    在整个 NoSQL 技术栈中,MemCache、Redis、MongoDB 被称为 NoSQL 三剑客。Redis 是传统关系型数据库的补充,而不是替代。

    对比项关系型数据库(MySQL)NoSQL(Redis)
    数据存储位置硬盘内存
    数据结构高度组织化、结构化键值对 + 多种数据结构,无预定义模式
    操作方式SQL命令(无声明式查询语言)
    事务严格 ACID松散事务控制(不保证回滚)
    索引/外键支持不支持(靠 Key 定位)
    核心优势数据一致性强高性能、高可用、可伸缩

    3、Redis 的典型应用场景

    ①缓存(最常见)

    查询请求先在 Redis 找数据,命中直接返回,大大减轻关系型数据库压力。

    ②数据临时存储

    登录 Token、短信验证码、验证码过期时间——这类数据天然适合放 Redis。

    ③分布式 Session 存储

    配合 SpringSession 解决多台服务器 Session 不一致问题。

    ④排行榜 / 计数器 / 去重

    ZSet 做排行榜,INCR 做计数器,Set 做流式数据去重。

    ⑤消息暂存 / 异步队列

    List 的 LPUSH/BRPOP 实现简单异步队列。


    4、Redis 不适用场景

    • 直接按 value 查询:必须通过 key 定位,没有按 value 条件查询的能力。
    • 多键一值表达关系:一个 key 对应一个 value。
    • 事务回滚:Redis 不支持回滚,运行期报错不撤销已执行命令。

    2、安装 Redis 8(Ubuntu 22.04)

    1、版本问题

    Ubuntu 22.04(jammy)自带 apt 源里的 Redis 是 6.x,不符合我们的版本基准。要使用 Redis 8,最可靠的方式是源码编译安装(同时也让我们能控制安装目录、理解文件构成)。

    备选方案:使用 Redis 官方 apt 仓库(https://packages.redis.io/)安装最新版,命令更简单,但不便于演示"目录结构 + 多实例"。本课程以源码编译为主。


    2、安装编译工具链

    sudo apt update
    sudo apt install -y build-essential tcl pkg-config
    
    • build-essential:提供 gcc、make 等编译工具。
    • tcl:Redis 源码自带的测试套件需要。
    • pkg-config:编译时查找依赖库。

    提示:如果后面配置 systemd 服务,还需要 sudo apt install -y systemd-dev(第 12 讲用到)。


    3、下载并解压源码

    到官网 https://redis.io/download 查看最新 8.x 版本号,然后下载:

    # 进入工作目录
    cd /opt
    
    # 下载 Redis 8 源码包(版本号以实际为准,这里用 8.0.x 示意)
    sudo wget https://download.redis.io/releases/redis-8.0.6.tar.gz
    
    # 解压
    sudo tar -zxvf redis-8.0.6.tar.gz
    

    解压后得到目录 /opt/redis-8.0.6。


    4、编译安装

    cd /opt/redis-8.0.6
    
    # 编译
    sudo make
    
    # 安装到系统目录
    sudo make install
    

    make install 默认把可执行文件复制到 /usr/local/bin:

    可执行文件作用
    redis-serverRedis 服务器(服务端)
    redis-cliRedis 命令行客户端
    redis-sentinel哨兵(高可用监控,与 redis-server 同源)
    redis-check-aofAOF 文件修复工具
    redis-check-rdbRDB 文件修复工具
    redis-benchmark性能测试工具

    验证安装成功:

    redis-server --version
    # Redis server v=8.0.6 sha=...:0 malloc=jemalloc-5.3.0 bits=64
    

    5、准备配置目录与配置文件

    # 建立专属目录(存放配置文件、日志、数据)
    sudo mkdir -p /usr/local/redis
    
    # 把源码里的官方示例配置复制一份作为"正式使用"的配置
    sudo cp /opt/redis-8.0.6/redis.conf /usr/local/redis/redis.conf
    
    # 修改属主便于操作
    sudo chown -R $USER:$USER /usr/local/redis
    

    规范:保留 /opt/redis-8.0.6/redis.conf 作为纯净备份,/usr/local/redis/redis.conf 作为正式使用的配置。


    3、启动 Redis

    1、前台启动(先看一眼)

    redis-server /usr/local/redis/redis.conf
    

    前台启动会占用命令行,日志打印到标准输出,适合第一次验证。Ctrl+C 停止。


    2、守护进程(后台)启动

    修改配置文件,让 Redis 后台运行并写日志:

    # 编辑配置
    vim /usr/local/redis/redis.conf
    
    配置项值作用
    daemonizeyes以守护进程方式后台运行
    logfile"redis.log"日志写到文件
    dir/usr/local/redis工作目录(日志、RDB 存放处)
    # 后台启动
    redis-server /usr/local/redis/redis.conf
    
    # 查看进程
    ps -ef | grep redis
    # 查看端口
    ss -tlnp | grep 6379
    

    4、客户端连接

    1、启动客户端

    redis-cli
    # 127.0.0.1:6379>
    

    2、测试连通

    127.0.0.1:6379> ping
    PONG
    

    3、读写一个键值对

    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> get hello
    "world"
    

    4、退出客户端

    127.0.0.1:6379> exit
    # 或
    127.0.0.1:6379> quit
    

    5、关闭服务器

    # 在客户端内
    127.0.0.1:6379> shutdown
    

    或者用 redis-cli 直接执行:

    redis-cli shutdown
    

    正常 shutdown 会先执行一次持久化再退出(第 9 讲细讲)。


    5、常用命令速查

    1、redis-server

    用法说明
    redis-server <conf>按指定配置文件启动
    redis-server --port 6380指定端口启动(临时覆盖配置)
    redis-server --help查看帮助

    2、redis-cli

    用法说明
    redis-cli连接本机默认 6379
    redis-cli -h 主机 -p 端口指定主机与端口(重点记忆)
    -h 参数的默认值:127.0.0.1(本机)
    -p 参数的默认值:6379
    都是默认值的时候,就可以不指定这两个参数
    redis-cli -a 密码带密码连接(Redis 8 会提示用 --no-auth-warning 去掉警告)
    redis-cli ping不登录,直接执行命令
    redis-cli shutdown关闭服务器,本质上还是不登录直接执行命令(重点记忆)
    redis-cli -n 库号连接时直接指定数据库
    redis-cli --cluster create ...创建集群(第 11 讲)
    redis-cli -c -h 主机 -p 端口集群模式连接(自动重定向)

    6、课堂练习

    1. 用 redis-cli 连接本机 Redis,执行 ping、set name <你的名字>、get name。
    2. 用 redis-cli -h 127.0.0.1 -p 6379 显式连接并执行 dbsize。
    3. 查看 Redis 进程与 6379 端口,用 redis-cli shutdown 关掉后重启。
    4. (挑战)用 redis-benchmark -n 100000 -c 50 -t set,get 测一下本机 Redis 的读写性能。

    7、本讲小结

    • Redis 是内存版键值数据库,定位是数据库/缓存/消息中间件的补充。
    • Ubuntu 22.04 上装 Redis 8 走源码编译(apt 源只有 6.x)。
    • 记住三个命令:redis-server <conf>、redis-cli、redis-cli shutdown。
    • 配置文件 /usr/local/redis/redis.conf 是后续所有配置的基础。

    8、本节验证

    • 说出 Redis 的三重定位(数据库/缓存/消息中间件)与"基于内存、键值存储"的特点 ✅
    • 知道 Ubuntu 22.04 用源码编译安装 Redis 8(apt 源只有 6.x)✅
    • 会用 redis-server 启动、redis-cli 连接、redis-cli shutdown 关闭 ✅
    • 记住配置文件 /usr/local/redis/redis.conf 是后续所有配置的基础 ✅
    • 能配置 systemd 实现开机自启 ✅
    end