Redis 作用及安装

type
status
date
slug
summary
tags
category
icon
password

一、Redis 的作用

Redis 是一种 基于内存的高性能键值数据库,常用作缓存,也可以作为消息队列、分布式锁、会话存储等。

1. 主要应用场景

  • 缓存服务器:加快访问速度(减少数据库压力)
  • 存储热点数据:例如排行榜、用户 session
  • 存储需要过期的数据:如验证码、临时 token
  • 消息队列 / 发布订阅

2. 关键点

  • 缓存命中率:缓存使用的核心指标,命中率越高,性能越好。
  • 适合缓存的数据:静态数据、访问频繁的数据、短期内可过期的数据。

3. Redis 与 NoSQL

  • NoSQL:Not Only SQL(非关系型数据库)
  • 常见 NoSQL 数据库:Memcached、MongoDB、Redis

二、Redis 的特性

  1. 内存存储:数据主要存放在内存中,速度极快。
  1. 键值对存储:支持多种数据结构(字符串、哈希、列表、集合、有序集合等)。
  1. 持久化机制:支持写入磁盘(RDB 快照、AOF 日志)。
  1. 多种部署模式
      • 单机模式
      • 主从复制
      • 哨兵模式(高可用)
      • 分片集群(水平扩展)

三、Redis 安装部署(Linux 环境示例)

1. 安装依赖

2. 下载 & 编译

3. 配置环境变量

4. 修改配置文件(后台运行)

5. 启动 Redis

6. 测试

7. 关闭 Redis

8. redis配置

基础配置
  • bind 192.168.66.144
    • 指定 Redis 只监听该 IP 地址上的连接。
      👉 如果只想本机访问,可以写 127.0.0.1;如果要远程访问,需要写服务器的局域网或公网 IP。
  • protected-mode yes
    • 保护模式,默认开启。
    • 如果只监听 127.0.0.1,保护模式不会限制访问。
    • 如果绑定了外网 IP 且没有设置密码,会拒绝外部访问。
  • port 6379
    • Redis 默认端口。
  • tcp-backlog 511tcp-backlog 511
    • tcp-backlog 控制内核 listen 队列长度,默认 511。
    • 但要注意:Linux 内核会把这个值 截断为内核参数的最大值,即:
      • /proc/sys/net/core/somaxconn
      • /proc/sys/net/ipv4/tcp_max_syn_backlog
    • 所以如果你只改了 Redis 配置,内核参数太小,依然不会生效。
      • 在高并发环境下,可以这样设置:
        1. 修改 Redis 配置:
        1. 修改系统参数(比如 CentOS/Ubuntu):
        1. 永久生效(写入 sysctl):
        要想高并发场景不掉连接 → Redis 配置 + 内核参数 一起改

网络 & 连接
  • timeout 0
    • 客户端空闲连接超时时间,0 表示永不超时。
  • tcp-keepalive 300
    • 每隔 300 秒检测一次客户端是否存活,用于清理死连接。

运行模式
  • daemonize yes
    • 后台运行。
  • pidfile /var/run/redis_6379.pid
    • 保存 Redis 进程的 PID 文件路径。
  • loglevel notice
    • 日志级别,可选:debug | verbose | notice | warning
  • logfile "”
    • logfile "" 的意思是:
    • 当值为空字符串时,Redis 日志会输出到标准输出(stdout)
    • 如果你是前台运行(daemonize no),日志会直接显示在终端里。
    • 如果你是后台运行(daemonize yes),日志会写入到 syslog(取决于系统配置,一般是 /var/log/messagesjournalctl 里)。
  • databases 16
    • 默认提供 16 个逻辑数据库(编号 0–15)。
  • always-show-logo no
    • 启动时是否打印 Redis Logo。
  • set-proc-title yes
    • 是否允许 Redis 修改进程名。
  • proc-title-template "{title} {listen-addr} {server-mode}"
    • 进程名显示模板,例如:
  • locale-collate ""
    • 排序时使用的语言环境,空表示系统默认。

RDB(快照持久化)
  • stop-writes-on-bgsave-error yes
    • 如果后台保存 RDB 出错,是否禁止写入。
  • rdbcompression yes
    • 保存 RDB 时是否压缩数据。
  • rdbchecksum yes
    • RDB 文件是否使用校验和,保证数据完整性。
  • dbfilename dump.rdb
    • RDB 文件名。
  • rdb-del-sync-files no
    • 在 RDB 传输完成后是否删除临时文件。
  • dir ./
    • 数据文件存放目录。

主从复制
  • replica-serve-stale-data yes
    • 从节点在与主节点断开时是否继续提供旧数据:
    • yes:可读旧数据。
    • no:拒绝请求,返回错误。

四、补充知识点

  1. RDB vs AOF
      • RDB(快照):性能好,适合灾难恢复,但可能丢失最后一次快照之后的数据。
      • AOF(日志):记录每个写操作,更安全,但日志体积较大,恢复速度慢。
  1. 常用数据结构
      • String:字符串(最常用,缓存 key-value)
      • Hash:哈希表(存储对象属性)
      • List:列表(消息队列、任务队列)
      • Set:无序集合(去重功能,如用户点赞 ID 集合)
      • Sorted Set:有序集合(排行榜、积分系统)
  1. 内存淘汰策略(缓存满时如何处理)
      • noeviction:不删除,写入报错(默认)
      • allkeys-lru:所有 key 都可淘汰,使用 LRU(最少使用)算法
      • volatile-lru:只淘汰设置了过期时间的 key
      • 其他策略:LFU、TTL 优先等

五、补充

  1. 过期设置命令
    1. 文档中 set url "http://www.jd.com" EX 10 是正确的写法,但需要注意:EX 表示秒级过期时间。有的人会误以为是毫秒,需要用 PX 才是毫秒。

👉 总结一句话:Redis 是一个高性能的内存数据库,常用于缓存、分布式场景,掌握其数据结构和持久化策略是学习重点。

Loading...