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

文章目录

  • 前言
  • redis是什么?
    • 定义
    • 原理与特点
    • 与MySQL对比
  • Redis安装
    • 方式一、Homebrew 快速安装 Redis(推荐)
    • 方式二、源码编译安装redis
    • Homebrew 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配置的方法

  1. 直接修改配置文件:需重启服务生效(涉及网络、持久化等核心配置)
    直接编辑 Redis 的配置文件(通常名为 redis.conf),然后重启 Redis 服务以使更改生效
# 修改配置文件
vim /path/to/redis.conf# 重启服务生效(生产环境建议低峰期操作)
redis-cli -a password shutdown # 安全停止(保存数据)
redis-server /path/to/redis.conf
  1. 动态修改:通过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 <seconds> <keys-changed>)
# 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 <host> -p <port> -a <password>
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 :63792. 忘记密码
# 临时关闭认证
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux grep 命令详解及示例大全

文章目录 一、基本语法二、常用选项及示例1. 基本匹配&#xff1a;查找包含某字符串的行2. 忽略大小写匹配 -i3. 显示行号 -n4. 递归查找目录下的文件 -r 或 -R5. 仅显示匹配的字符串 -o6. 使用正则表达式 -E&#xff08;扩展&#xff09;或 egrep7. 显示匹配前后行 -A, -B, -C…

【排序算法】快速排序(全坤式超详解)———有这一篇就够啦

【排序算法】——快速排序 目录 一&#xff1a;快速排序——思想 二&#xff1a;快速排序——分析 三&#xff1a;快速排序——动态演示图 四&#xff1a;快速排序——单趟排序 4.1&#xff1a;霍尔法 4.2&#xff1a;挖坑法 4.3&#xff1a;前后指针法 五&#xff1a;…

【platform push 提示 Invalid source ref: HEAD】

platform push 提示 Invalid source ref: HEAD 场景&#xff1a;环境&#xff1a;排查过程&#xff1a;解决&#xff1a; 场景&#xff1a; 使用platform push 命令行输入git -v 可以输出git 版本号&#xff0c;但就是提示Invalid source ref: HEAD&#xff0c;platform creat…

x-cmd install | Tuistash - Logstash 实时监控,告别图形界面,高效便捷!

目录 核心优势&#xff0c;一览无遗安装适用场景&#xff0c;广泛覆盖功能亮点&#xff0c;不容错过 还在为 Logstash 的监控而头疼吗&#xff1f;还在频繁切换图形界面查看数据吗&#xff1f;现在&#xff0c;有了 Tuistash&#xff0c;一切都将变得简单高效&#xff01; Tui…

【JEECG】BasicTable单元格编辑,插槽添加下拉组件样式错位

1.功能说明 BasicTable表格利用插槽&#xff0c;添加组件实现单元格编辑功能&#xff0c;选择组件下拉框错位 2.效果展示 3.解决方案 插槽内组件增加&#xff1a;:getPopupContainer"getPopupContainer" <template #salesOrderProductStatus"{ column, re…

论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors

RoboGround 论文 一类中间表征是语言指令&#xff0c;但对于空间位置描述过于模糊&#xff08;“把杯子放桌上”但不知道放桌上哪里&#xff09;&#xff1b;另一类是目标图像或点流&#xff0c;但是开销大&#xff1b;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…

K8S的使用(部署pod\service)+安装kubesphere图形化界面使用和操作

master节点中通过命令部署一个tomcat 查看tomcat被部署到哪个节点上 在节点3中进行查看 在节点3中进行停止容器&#xff0c;K8S会重新拉起一个服务 如果直接停用节点3&#xff08;模拟服务器宕机&#xff09;&#xff0c;则K8S会重新在节点2中拉起一个服务 暴露tomcat访…

纷析云开源财务软件:重新定义企业财务自主权

痛点直击&#xff1a;传统财务管理的三大桎梏 “黑盒”困局 闭源商业软件代码不可见&#xff0c;企业无法自主调整功能&#xff0c;政策变化或业务升级依赖厂商排期&#xff0c;响应滞后。 数据托管于第三方平台&#xff0c;存在泄露风险&#xff0c;合规审计被动受限。 成本…

mybatis 的多表查询

文章目录 多表查询一对一一对多 多表查询 一对一 开启代码片段编写 专注于 SQL的 编写 JDBC 的写法&#xff0c;注重于 SQL mybatis 在 一对一查询时&#xff0c;核心在于 建立每个表对应的实体类主键根据 主键 id 进行查询&#xff0c;副标根据 设定外键进行查询 在 SQL编写…

Scrapy爬虫实战:如何用Rules实现高效数据采集

Scrapy是一个强大的Python爬虫框架&#xff0c;而其中的Rules类则为爬虫提供了更高级的控制方式。本文将详细介绍如何在Scrapy中使用Rules&#xff0c;以及各个参数的具体作用&#xff0c;并结合实际场景说明Rules的必要性。 为什么需要Rules&#xff1f; 在Web爬取过程中&…

ActiveMQ 性能优化与网络配置实战(一)

一、引言 在当今分布式系统和微服务架构盛行的时代&#xff0c;消息中间件作为实现系统间异步通信、解耦和削峰填谷的关键组件&#xff0c;其重要性不言而喻。ActiveMQ 作为一款广泛应用的开源消息中间件&#xff0c;凭借其对多种消息协议的支持、灵活的部署方式以及丰富的功能…

免费视频压缩软件

一、本地软件&#xff08;支持离线使用&#xff09; 1. HandBrake 平台&#xff1a;Windows / macOS / Linux 特点&#xff1a;开源免费&#xff0c;支持多种格式转换&#xff0c;提供丰富的预设选项&#xff08;如“Fast 1080p”快速压缩&#xff09;&#xff0c;可自定义分…

消除AttributeError: module ‘ttsfrd‘ has no attribute ‘TtsFrontendEngine‘报错输出的记录

#工作记录 尝试消除 消除“模块ttsfrd没有属性ttsfrontendengine”的错误的记录 报错摘录&#xff1a; Traceback (most recent call last): File "F:\PythonProjects\CosyVoice\webui.py", line 188, in <module> cosyvoice CosyVoice(args.model_di…

Acrel-EIoT 能源物联网云平台在能耗监测系统中的创新设计

摘要 随着能源管理的重要性日益凸显&#xff0c;能耗监测系统成为实现能源高效利用的关键手段。本文详细介绍了基于安科瑞Acrel-EIoT能源物联网云平台的能耗监测系统的设计架构与应用实践。该平台采用分层分布式结构&#xff0c;涵盖感知层、网络层、平台层和应用层&#xff0…

计算机网络-同等学力计算机综合真题及答案

计算机网络-同等学力计算机综合真题及答案 &#xff08;2003-2024&#xff09; 2003 年网络 第二部分 计算机网络&#xff08;共 30 分&#xff09; &#xff08;因大纲变动因此 2004 年真题仅附真题&#xff0c;不作解析。&#xff09; 一、填空题&#xff08;共 10 分&#…

PyTorch常用命令详解:助力深度学习开发

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…

深度学习:梯度下降法的数学原理

梯度下降法——是一种最优化算法,用于找到函数的局部极小值或全局最小值。它基于函数的梯度(或偏导数)信息来更新参数,目标是通过逐渐调整参数值来最小化目标函数的值。在机器学习算法中,梯度下降是最常采用的方法之一,尤其是在深度学习模型中,BP反向传播方法的核心就是…

刷leetcodehot100返航版--哈希表5/5、5/6

回顾一下之前做的哈希&#xff0c;貌似只有用到 unordered_set&#xff1a;存储无序元素unordered_map&#xff1a;存储无序键值对 代码随想录 常用代码模板2——数据结构 - AcWing C知识回顾-CSDN博客 1.两数之和5/5【30min】 1. 两数之和 - 力扣&#xff08;LeetCode&am…

openwrt 使用quilt 打补丁(patch)

1,引入 本文简单解释如何在OpenWRT下通过quilt命令打补丁--patch&#xff0c;也可查看openwrt官网提供的文档 2&#xff0c;以下代码通过编译net-snmp介绍 ① 执行编译命令之后&#xff0c;进入build_dir的net-snmp-5.9.1目录下&#xff0c;改目录即为snmp最终编译的目录了 /…

【开发工具】Window安装WSL及配置Vscode获得Linux开发环境

笔者面试时需要本地IDE手撕代码并测试&#xff0c;但是windows开发环境用不习惯&#xff0c;Min64和json配置也比较麻烦&#xff0c;因此采用WSLvscode的方式快速配置Linux开发环境 WSL安装 直接在微软商店搜索WSL即可 系统设置 开始菜单搜索启用或关闭 Windows 功能&…