【Redis新手入门指南】从小白入门到日常使用(全)

admin 1224次浏览

摘要:文章目录 前言redis是什么?定义原理与特点与MySQL对比 Redis安装方式一、Homebrew 快速安装 Redis(推荐)方式二、源码编译安装redisHomebrew vs 源码安

文章目录

前言redis是什么?定义原理与特点与MySQL对比

Redis安装方式一、Homebrew 快速安装 Redis(推荐)方式二、源码编译安装redisHomebrew vs 源码安装对比

redis配置说明修改redis配置的方法常见redis配置项说明

redis常用命令redis服务启动命令redis客户端连接访问键管理数据库操作不同数据类型操作命令

数据备份与迁移1. RDB快照备份2. redis快照迁移

redis客户端可视化(待更新)

前言

redis介绍、安装、常用命令、数据备份与迁移、常见用法。

redis是什么?

定义

Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值存储系统。支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等数据结构,广泛应用于缓存、消息队列、实时统计等场景。

原理与特点

内存存储:数据主要存储在内存中,读写速度极快(每秒可处理超10万次操作)

数据结构多样性:支持5种核心数据结构,满足复杂业务需求

持久化双机制:

RDB快照:定期生成全量数据镜像(二进制文件),适合灾难恢复AOF日志:实时记录写操作命令,保证数据完整性

单线程架构:通过I/O多路复用实现高并发处理,避免线程竞争问题

与MySQL对比

特性RedisMySQL数据存储内存为主磁盘存储数据结构键值对+复杂结构关系型表结构读写性能微秒级响应毫秒级响应适用场景缓存/实时计算持久化存储/复杂查询

Redis安装

方式一、Homebrew 快速安装 Redis(推荐)

macOS 用户 Redis 快速安装方法 环境要求

macOS系统homebrew

1. 安装 Homebrew(如未安装) 打开终端执行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 一键安装 Redis

brew install redis

# 快速验证安装

```bash

# 连接本地Redis(默认无密码)

redis-cli ping # 应返回 PONG

# 查看版本信息

redis-cli --version

3. 关键路径说明

类型路径配置文件/usr/local/etc/redis.conf数据存储目录/usr/local/var/db/redis/日志文件/usr/local/var/log/redis.log

方式二、源码编译安装redis

环境要求

Linux/macOS系统GCC编译器(用于源码编译)

1. 安装GCC编译器

# Ubuntu/Debian

sudo apt-get update

sudo apt-get install build-essential -y

# CentOS/RHEL

sudo yum groupinstall "Development Tools" -y

2. Linux/macOS安装

# 下载最新稳定版

wget https://download.redis.io/redis-stable.tar.gz

tar -xzvf redis-stable.tar.gz

cd redis-stable

# 编译安装

make

sudo make install

# 启动Redis服务(前台模式)

redis-server

3. 配置文件路径

源码目录:redis-stable/redis.conf安装后推荐路径:/usr/local/redis/etc/redis.conf

Homebrew vs 源码安装对比

特性Homebrew安装源码编译安装安装复杂度⭐️ 一键完成⭐️⭐️⭐️ 需解决依赖配置文件管理⭐️⭐️ 集中存放⭐️ 需手动管理版本更新brew upgrade redis需重新下载编译自定义编译选项❌ 受限✅ 完全自由适合场景开发/快速部署生产定制化需求

redis配置说明

修改redis配置的方法

直接修改配置文件:需重启服务生效(涉及网络、持久化等核心配置) 直接编辑 Redis 的配置文件(通常名为 redis.conf),然后重启 Redis 服务以使更改生效

# 修改配置文件

vim /path/to/redis.conf

# 重启服务生效(生产环境建议低峰期操作)

redis-cli -a password shutdown # 安全停止(保存数据)

redis-server /path/to/redis.conf

动态修改:通过CONFIG SET命令实时生效(部分参数)

# 动态修改

redis-cli -a yourpass

127.0.0.1:6379> CONFIG SET requirepass "NewPasswd" # 密码

127.0.0.1:6379> CONFIG SET appendonly yes

127.0.0.1:6379> CONFIG SET timeout 300 # 设置客户端超时300秒

127.0.0.1:6379> CONFIG REWRITE # 将动态修改持久化到配置文件

动态配置限制 Redis的某些配置参数(如bind、port、daemonize等)需要重启服务才能生效,无法通过CONFIG SET命令直接修改。这是出于安全性和稳定性考虑。

常见redis配置项说明

# ---链接访问管理

# 监听端口(默认6379)

port 6380

# 访问密码(默认无)

requirepass MySecurePassw0rd!

# bind的作用:bind参数用于指定Redis监听的网络接口(如127.0.0.1表示仅本地访问,空值或0.0.0.0表示监听所有接口)。

# 绑定IP地址 (bind),指定Redis监听的IP地址,即:允许指定 IP 地址连接

# 内网可以不配置bind,直接注释掉就行

bind 127.0.0.1

# 关闭保护模式(默认yes,开启的话,只有本机才可以访问redis)

# 当未设置bind且无密码时,保护模式会拒绝远程连接

protected-mode no

# 最大客户端连接数(默认10000)

maxclients 20000

# 客户端空闲超时(秒,0表示不限制)

timeout 300

# --- RDB持久化管理

# RDB持久化快照触发策略(格式:save

# 1min内有至少有1000个键被改动则自动化生产rbd文件

# save 60 1000

# 工作目录(持久化文件存储位置)

dir /data/redis

# RDB持久化文件名(默认dump.rdb)

dbfilename custom_dump.rdb

# PID文件路径(默认/var/run/redis.pid)

pidfile /var/run/redis_6380.pid

# ---内存管理配置

# 最大内存限制(示例:4GB)

maxmemory 4gb

# 内存淘汰策略(默认noeviction)

# volatile-lru:从已设置过期时间的键中淘汰最近最少使用

# allkeys-lru:全体键中淘汰最近最少使用(推荐)

# volatile-ttl:淘汰剩余生存时间最短的键

maxmemory-policy allkeys-lru

# ---日志管理配置

# 日志级别(debug/verbose/notice/warning)

loglevel notice

# 日志文件路径(默认不记录文件)

logfile "/var/log/redis/redis-server.log"

# 系统日志标识(默认redis)

syslog-ident redis6380

# ---其他配置

# 以守护进程运行(后台模式,默认no)

daemonize yes

# 后台保存出错时停止写入(推荐yes)

# 作用:保证持久化数据一致性

stop-writes-on-bgsave-error yes

# 开启AOF模式(默认no)

# 作用:记录所有写操作命令,重启时重放日志恢复数据

# 优点:数据完整性高;缺点:文件体积较大

appendonly yes

# AOF文件名称(默认appendonly.aof)

appendfilename "custom_appendonly.aof"

# AOF同步策略

# always: 每次写操作都同步(最安全,性能差)

# everysec: 每秒同步(推荐,平衡性能与安全)

# no: 由操作系统决定(最快,可能丢失数据)

appendfsync everysec

# 开启混合持久化(需先开启AOF)

# 作用:AOF文件由RDB快照头 + AOF增量命令组成

# 优点:结合RDB快速恢复和AOF数据完整性的优势

aof-use-rdb-preamble yes

# 命令重命名(安全加固)

# 示例:禁用FLUSHALL命令

rename-command FLUSHALL ""

redis常用命令

redis命令不区分大小写

redis服务启动命令

Linux/macos

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf # 前台启动

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --daemonize yes # 后台启动

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a YourPassword shutdown # 安全停止(数据持久化)

sudo pkill -9 redis-server # 强制停止(可能丢失数据)

ps aux | grep redis-server # 查看进程是否存在

netstat -lntp | grep 6379 # 检查端口监听状态

redis-cli -a YourPassword ping # 服务健康检查(返回PONG正常)

mac Homebrew安装方式

brew services start redis # 启动服务(后台运行)

brew services stop redis # 停止服务

brew services restart redis # 重启服务(配置修改后使用)

brew services info redis # 查看运行状态

Linux系统服务管理(Systemd)

sudo systemctl start redis # 启动服务

sudo systemctl stop redis # 停止服务

sudo systemctl restart redis # 重启服务

sudo systemctl status redis # 查看状态

redis客户端连接访问

本地默认连接

# 连接本地Redis(默认端口6379,无密码)

redis-cli

# 连接后验证服务状态

127.0.0.1:6379> PING # 正常响应 PONG

指定主机和端口

# 连接远程Redis服务器

./redis-cli -h -p -a

redis-cli -h 127.0.0.1 -p 6379 -a yourpassword # 连接命令行直接指定认证密码

redis-cli -h 127.0.0.1 -p 6379 # 先连接后密码认证

127.0.0.1:6379> AUTH yourpassword # 返回 OK 表示成功

# 启动redis服务后,可以使用 netstat 或类似工具来检查 Redis 是否在预期的端口和接口上监听

netstat -lntp | grep redis

# 查看redis配置信息

redis-cli -h localhost -p 6379 -a yourpassword CONFIG GET *

常见问题解决方案

1. 连接被拒绝

# 检查服务是否运行

brew services list | grep redis

# 检查防火墙设置

sudo lsof -i :6379

2. 忘记密码

# 临时关闭认证

vim /usr/local/etc/redis.conf → 注释 requirepass

brew services restart redis

# 连接后重置密码

redis-cli

127.0.0.1:6379> CONFIG SET requirepass "NewPassword"

键管理

KEYS * # 查看所有键(生产环境慎用)

keys *user* # 匹配包含user的所有key

EXISTS akey # 检查键是否存在(返回1/0)

DEL akey # 删除指定键

TTL akey # 查看键剩余生存时间(秒)

EXPIRE akey 60 # 设置60秒后过期

键空间扫描:渐进式遍历所有键,避免KEYS *导致的服务器阻塞

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

核心参数:

cursor:游标值(0表示开始,遍历结束返回0)

MATCH:键名匹配模式(支持*、?等通配符)

COUNT:单次返回的键数量(默认10,实际可能不准确)

TYPE:过滤键类型(Redis 6.0+支持,如string/hash/list)

scan 0 MATCH *

SCAN 0 COUNT 10

# 初始扫描(返回下一游标和部分键)

127.0.0.1:6379> SCAN 0 MATCH user:* COUNT 5

1) "17" # 下一游标

2) 1) "user:1001" # 匹配到的键列表

2) "user:1002"

# 继续迭代(使用返回的游标)

127.0.0.1:6379> SCAN 17 MATCH user:* COUNT 5

1) "0" # 游标归零表示遍历完成

2) 1) "user:1003"

# 显示数据库键空间统计信息,

# 包括:每个数据库的键总数,设置过期时间的键数量,平均TTL(生存时间)

info keyspace

127.0.0.1:6379> INFO KEYSPACE

# Keyspace

db0:keys=1532,expires=3,avg_ttl=259200000

db1:keys=47,expires=0,avg_ttl=0

数据库操作

SELECT 1 # 切换到1号数据库(默认0-15)

FLUSHDB # 清空当前数据库

FLUSHALL # 清空所有数据库(高危操作!)

监控预警

redis-cli -a yourpass INFO Memory # 查看内存使用

redis-cli -a yourpass INFO Stats # 查看操作统计

redis-cli -a yourpass --memkeys

# 输出示例:

# Key Bytes Type

# user:1001 2048 hash

不同数据类型操作命令

字符串(String):

SET counter 100 # 设置键值

GET counter # 获取值

INCR counter # 值+1,如100 → 101

DECR counter # 值-1 ,如101→ 100

APPEND counter "_end" # 追加字符串 → "100_end"

MSET k1 v1 k2 v2 # 批量设置键值

# 原始格式输出,获取二进制安全数据(处理含特殊字符的键值)

redis-cli --raw GET "binary_key"

# 备份/恢复某个key的数据

redis-cli -h 127.0.0.1 -p 6379 -a yourpassword --raw GET "akey" > backup_akey.bin # 二进制时用.bin保存更好

cat backup_akey.bin | ./redis-cli -h 127.0.0.1 -p 6379 -a yourpassword -x SET "akey"

哈希表(Hash):

HSET user:1001 name "John" age 30 # 设置字段,key为user:1001

HGET user:1001 age # 获取字段值 → "30"

HGETALL user:1001 # 获取所有字段 → name/age

HINCRBY user:1001 age 1 # 年龄+1 → 31

列表(List):

LPUSH queue task1 # 左侧插入 → [task1]

RPUSH queue task2 # 右侧插入 → [task1, task2]

LRANGE queue 0 -1 # 获取全部元素

LPOP queue # 弹出左侧 → task1

集合(Set):

SADD tags redis db # 添加元素

SMEMBERS tags # 查看所有元素 → redis/db

SINTER tags active_tags # 求交集

SREM tags db # 删除元素

有序集合(Sorted Set):

ZADD ranking 95 "PlayerA" 80 "PlayerB" # 添加带分数成员

ZRANGE ranking 0 -1 WITHSCORES # 升序查看 → PlayerB(80)/PlayerA(95)

ZREVRANGE ranking 0 0 # 获取第一名 → PlayerA

数据备份与迁移

1. RDB快照备份

非阻塞备份:

1.非阻塞式保存,Redis 在后台生成 RDB 文件,不会影响当前服务。

# 连接到源Redis并触发后台保存

redis-cli -h 127.0.0.1 -p 6379 -a yourpassword BGSAVE

# 检查保存是否完成(等待 'rdb_bgsave_in_progress' 变为 0 表示完成)

redis-cli -h 127.0.0.1 -p 6379 -a yourpassword INFO persistence

阻塞式备份:

2.阻塞式保存,立即生成 RDB 文件,但会暂停所有客户端请求直到完成(谨慎使用!会导致服务暂停,短暂不可用)

redis-cli -h 127.0.0.1 -p 6379 -a yourpassword SAVE

查看备份文件:

定位备份之后生成的RDB文件路径,一般文件名为 dump.rdb:

# 当你使用 Redis 的 BGSAVE 命令来触发一个后台快照保存时,Redis 会在后台创建一个 RDB 文件。

# 这个 RDB 文件的存储位置取决于 Redis 配置文件中的 dir 和 dbfilename 参数。

# dir: 这个配置指定了 Redis 数据库文件存储的目录。dbfilename: 这个配置指定了数据库文件的名称。

# 例如,如果你的配置文件中设置了 dir 为 /var/lib/redis,并且 dbfilename 设置为 dump.rdb,那么 RDB 文件将会被存储在 /var/lib/redis/dump.rdb。

redis-cli -a yourpass CONFIG GET dir # 查看存储目录 → /var/redis/data

redis-cli -a yourpass CONFIG GET dbfilename # 文件名 → dump.rdb

2. redis快照迁移

将备份好dump.rdb文件迁移到目标Redis的数据目录下,重启目标redis服务,就会自动加载dump.rdb的数据 redis的数据目录可以通过 CONFIG GET dir 查看

# 源服务器

scp /var/redis/data/dump.rdb user@newserver:/tmp/

# 目标服务器

sudo systemctl stop redis

cp /tmp/dump.rdb /var/redis/data/

sudo systemctl start redis

redis客户端可视化(待更新)

提示:所有生产环境操作前,请务必进行完整备份!遇到复杂问题时可查阅Redis官方文档或使用redis-cli --help获取帮助。

—end

相关文章
友情链接