Redis 从入门到精通(一):简介、安装与配置

系列导读:本系列将带领大家系统学习 Redis,从基础入门到高级应用,涵盖数据类型、集群、安全优化等核心内容。


文章目录

    • [一、Redis 简介](#一、Redis 简介)
      • [1.1 什么是 Redis?](#1.1 什么是 Redis?)
      • [1.2 Redis 发展历程](#1.2 Redis 发展历程)
    • [二、Redis 核心特性](#二、Redis 核心特性)
      • [2.1 性能极高](#2.1 性能极高)
      • [2.2 丰富的数据类型](#2.2 丰富的数据类型)
      • [2.3 原子性操作](#2.3 原子性操作)
      • [2.4 持久化机制](#2.4 持久化机制)
      • [2.5 主从复制](#2.5 主从复制)
      • [2.6 发布/订阅模式](#2.6 发布/订阅模式)
    • [三、Redis 安装](#三、Redis 安装)
      • [3.1 Linux 安装(Ubuntu/Debian)](#3.1 Linux 安装(Ubuntu/Debian))
      • [3.2 Linux 源码编译安装](#3.2 Linux 源码编译安装)
      • [3.3 Windows 安装](#3.3 Windows 安装)
      • [3.4 Docker 安装](#3.4 Docker 安装)
      • [3.5 客户端连接](#3.5 客户端连接)
    • [四、Redis 配置详解](#四、Redis 配置详解)
      • [4.1 配置文件位置](#4.1 配置文件位置)
      • [4.2 核心配置项](#4.2 核心配置项)
      • [4.3 运行时配置](#4.3 运行时配置)
    • [五、第一个 Redis 程序](#五、第一个 Redis 程序)
      • [5.1 基础操作](#5.1 基础操作)
      • [5.2 计数器示例](#5.2 计数器示例)
      • [5.3 Java 示例](#5.3 Java 示例)
      • [5.4 Python 示例](#5.4 Python 示例)
    • [六、Redis 桌面管理工具](#六、Redis 桌面管理工具)
      • [6.1 常用 GUI 工具](#6.1 常用 GUI 工具)
      • [6.2 RedisInsight 安装](#6.2 RedisInsight 安装)
    • 总结

一、Redis 简介

1.1 什么是 Redis?

Redis(Remote Dictionary Server)是一个开源的内存数据库,遵守 BSD 协议,它提供了一个高性能的键值(key-value)存储系统。

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      Redis 定位                             │
├─────────────────────────────────────────────────────────────┤
│  🗄️ 内存数据库    → 数据存储在内存中,访问速度极快          │
│  📝 键值存储      → 简单的 key-value 映射                   │
│  🔄 多种数据类型   → 字符串、列表、集合、有序集合、哈希      │
│  🌐 跨平台        → Linux、macOS、Windows 支持               │
└─────────────────────────────────────────────────────────────┘

1.2 Redis 发展历程

年份 版本 重要特性
2009 1.0 首次发布
2012 2.6 Lua 脚本支持
2015 3.0 Redis Cluster 支持
2020 6.0 多线程 I/O、ACL 安全
2022 7.0 Redis Functions、Sharded Pub/Sub

二、Redis 核心特性

2.1 性能极高

Redis 以其极高的性能而著称,能够支持每秒数十万次的读写操作:

操作类型 每秒次数
读操作 110,000 次/秒
写操作 81,000 次/秒
复制代码
🚀 高性能原因:
   → 数据存储在内存中,访问速度极快
   → 单线程模型,避免锁竞争开销
   → 高效的事件驱动模型
   → 简洁的数据结构,操作复杂度 O(1)

2.2 丰富的数据类型

Redis 不仅支持基本的键值存储,还提供了丰富的数据类型:

数据类型 说明 典型应用场景
String 字符串、整数、浮点数 缓存、计数器、Session
Hash 键值对集合 存储对象、用户信息
List 有序列表 消息队列、最新列表
Set 无序集合 标签、好友列表
ZSet 有序集合 排行榜、权重队列
Bitmaps 位图 用户签到、统计
HyperLogLog 基数统计 UV 统计
Geospatial 地理位置 附近的人、坐标查询
Streams 消息队列 实时消息处理

2.3 原子性操作

Redis 的所有操作都是原子性的,这意味着操作要么完全执行,要么完全不执行。

复制代码
✅ 原子性保证:
   → INCR 计数器不会出现并发问题
   → SETNX 分布式锁实现简单可靠
   → Lua 脚本执行期间不会被其他命令打断

2.4 持久化机制

Redis 支持数据的持久化,可以将内存中的数据保存到磁盘中:

持久化方式 说明 特点
RDB 定时快照 文件小,恢复快
AOF 追加日志 数据完整,文件较大
混合 结合两者 推荐生产使用

2.5 主从复制

Redis 支持 master-slave 模式的数据备份:

复制代码
┌─────────┐        复制         ┌─────────┐
│ Master  │ ──────────────────► │  Slave  │
│  主节点  │                     │  从节点  │
└─────────┘                     └─────────┘
     │
     └──────────────────────────► ┌─────────┐
                                  │  Slave  │
                                  └─────────┘

2.6 发布/订阅模式

Redis 内置了发布/订阅模式(Pub/Sub),允许客户端之间通过消息传递进行通信:

复制代码
发布者 (Publisher)     频道 (Channel)     订阅者 (Subscriber)
     │                       │                   │
     │  PUBLISH channel msg │                   │
     ├──────────────────────┼───────────────────┤
     │                       │                   │
     │                       │ ◄────────────────┤

三、Redis 安装

3.1 Linux 安装(Ubuntu/Debian)

bash 复制代码
# 更新软件源
sudo apt update

# 安装 Redis
sudo apt install redis-server

# 检查安装
redis-server --version

# 启动 Redis
sudo systemctl start redis

# 设置开机自启
sudo systemctl enable redis

# 查看 Redis 状态
sudo systemctl status redis

3.2 Linux 源码编译安装

bash 复制代码
# 下载 Redis 源码
wget http://download.redis.io/releases/redis-7.2.4.tar.gz

# 解压
tar -xzvf redis-7.2.4.tar.gz
cd redis-7.2.4

# 编译
make

# 安装
sudo make install

# 启动 Redis(使用默认配置)
cd src
./redis-server

# 启动 Redis(使用自定义配置)
./redis-server ../redis.conf

3.3 Windows 安装

bash 复制代码
# 方法一:使用 WSL(推荐)
# 在 Windows 上安装 WSL2,然后按照 Linux 方法安装

# 方法二:使用 Memurai 或 Redis Windows 版
# 下载:https://github.com/tporadowski/redis/releases

3.4 Docker 安装

bash 复制代码
# 拉取镜像
docker pull redis:latest

# 运行 Redis 容器
docker run -d --name myredis \
  -p 6379:6379 \
  redis:latest

# 运行并持久化数据
docker run -d --name myredis \
  -p 6379:6379 \
  -v /myredis/data:/data \
  redis:latest redis-server --appendonly yes

3.5 客户端连接

bash 复制代码
# 启动 Redis 客户端
redis-cli

# 连接远程 Redis
redis-cli -h 192.168.1.100 -p 6379

# 测试连接
redis-cli ping
# 返回:PONG

# 认证连接(如果设置了密码)
redis-cli -a yourpassword

四、Redis 配置详解

4.1 配置文件位置

操作系统 默认配置路径
Linux /etc/redis/redis.conf
macOS /usr/local/etc/redis.conf
Windows redis.windows.conf

4.2 核心配置项

conf 复制代码
# ==================== 基本配置 ====================

# 是否以守护进程运行
daemonize no

# 监听端口
port 6379

# 绑定地址(0.0.0.0 允许外部访问)
bind 127.0.0.1

# 连接超时时间(秒)
timeout 300

# 日志级别
loglevel notice

# 数据库数量
databases 16

# ==================== 持久化配置 ====================

# RDB 快照条件
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

# RDB 文件名
dbfilename dump.rdb

# 数据目录
dir ./

# ==================== 内存配置 ====================

# 最大内存限制
maxmemory 2gb

# 内存淘汰策略
maxmemory-policy allkeys-lru

# ==================== 安全配置 ====================

# 连接密码
requirepass yourpassword

# ==================== AOF 持久化 ====================

# 启用 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# 同步策略
appendfsync everysec  # everysec / always / no

4.3 运行时配置

bash 复制代码
# 查看所有配置
redis-cli CONFIG GET *

# 查看单个配置
redis-cli CONFIG GET maxmemory

# 修改配置(运行时)
redis-cli CONFIG SET maxmemory 4gb

# 修改配置(重启后生效)
redis-cli CONFIG SET requirepass newpassword

五、第一个 Redis 程序

5.1 基础操作

bash 复制代码
# 启动客户端
redis-cli

# 设置键值对
redis-cli> SET mykey "Hello Redis"
OK

# 获取值
redis-cli> GET mykey
"Hello Redis"

# 设置带过期时间的键(秒)
redis-cli> SETEX cachekey 60 "cached data"
OK

# 仅当键不存在时设置
redis-cli> SETNX newkey "new value"
(integer) 1

# 查看所有键
redis-cli> KEYS *
1) "mykey"
2) "newkey"

# 删除键
redis-cli> DEL mykey
(integer) 1

# 检查键是否存在
redis-cli> EXISTS mykey
(integer) 0

5.2 计数器示例

bash 复制代码
# 设置计数器
redis-cli> SET counter 0
OK

# 递增
redis-cli> INCR counter
(integer) 1
redis-cli> INCR counter
(integer) 2

# 递增指定数值
redis-cli> INCRBY counter 10
(integer) 12

# 递减
redis-cli> DECR counter
(integer) 11

5.3 Java 示例

java 复制代码
import redis.clients.jedis.Jedis;

public class RedisDemo {
    public static void main(String[] args) {
        // 连接 Redis
        Jedis jedis = new Jedis("localhost", 6379);
        
        // 设置密码(如果需要)
        // jedis.auth("password");
        
        // 字符串操作
        jedis.set("greeting", "Hello Redis!");
        System.out.println(jedis.get("greeting"));
        
        // 计数器
        jedis.set("visits", "0");
        jedis.incr("visits");
        System.out.println("Visits: " + jedis.get("visits"));
        
        // 哈希操作
        jedis.hset("user:1", "name", "张三");
        jedis.hset("user:1", "age", "25");
        System.out.println(jedis.hgetAll("user:1"));
        
        // 列表操作
        jedis.lpush("tasks", "task1");
        jedis.lpush("tasks", "task2");
        System.out.println(jedis.lrange("tasks", 0, -1));
        
        // 关闭连接
        jedis.close();
    }
}

5.4 Python 示例

python 复制代码
import redis

# 连接 Redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)

# 字符串操作
r.set('greeting', 'Hello Redis!')
print(r.get('greeting'))

# 计数器
r.set('visits', '0')
r.incr('visits')
print(f'Visits: {r.get("visits")}')

# 哈希操作
r.hset('user:1', mapping={'name': '张三', 'age': '25'})
print(r.hgetall('user:1'))

# 列表操作
r.lpush('tasks', 'task1', 'task2')
print(r.lrange('tasks', 0, -1))

# 设置过期时间
r.setex('temp_key', 60, 'temporary data')

六、Redis 桌面管理工具

6.1 常用 GUI 工具

工具 平台 说明
Redis Desktop Manager 跨平台 功能强大的图形界面
Another Redis Desktop Manager 跨平台 开源免费
RedisInsight 跨平台 Redis 官方工具
phpRedisAdmin Web PHP 编写的 Web 管理

6.2 RedisInsight 安装

bash 复制代码
# Docker 方式
docker run -d --name redisinsight \
  -p 8001:8001 \
  -v redisinsight:/db \
  redislabs/redisinsight:latest

访问 http://localhost:8001 即可使用。


总结

本文我们学习了:

Redis 简介 :高性能内存数据库,键值存储系统

核心特性 :丰富数据类型、原子操作、持久化、主从复制

安装配置 :Linux、Docker、源码编译

配置文件 :核心配置项详解

基础操作 :SET/GET/KEYS 等基本命令

多语言客户端:Java、Python 示例

下篇预告 :(Redis 从入门到精通(二):数据类型详解),将深入讲解 Redis 的 8 种数据类型及适用场景。


作者 :刘~浪地球
系列 :Redis 从入门到精通(一)
更新时间:2026-04-02

相关推荐
APIshop2 小时前
Java获取京东商品详情接口(item_get)实战指南
java·linux·数据库
Bat U2 小时前
MySQL数据库|联合查询
数据库·mysql
卢傢蕊2 小时前
MySQL 故障排查与生产环境优化
数据库·mysql
雪碧聊技术2 小时前
数据库的第一、二、三范式分别解决了什么问题?一文详解
数据库·部分依赖·传递依赖·第一、二、三范式·列的原子性
小红的布丁3 小时前
Redisson 分布式锁实现:可重入与看门狗
redis
卢傢蕊3 小时前
MySQL全量、增量备份与恢复
数据库·mysql
码农垦荒笔记4 小时前
MySQL主从延迟根因诊断法:从现象到本质的全链路排查指南
数据库·mysql·主从复制
我不是8神4 小时前
CAP 定理与 etcd 核心知识点总结
数据库·etcd
kiku18184 小时前
Mysql故障排查与优化
数据库·mysql