当前位置: 首页 > news >正文

Redis 核心文件、命令与操作指南

目录

一、Redis 重要文件及作用

1、启动/停止命令与脚本

2、配置文件

3、持久化文件存储目录

4、日志文件目录

二、Redis 命令行客户端(redis-cli)

连接 Redis 服务器

方式一:交互式模式

方式二:命令模式

三、Redis 客户端形态全景

1、命令行客户端(redis-cli)【教学核心工具】(上面第二点这种)

基础用法:

生产环境注意事项:

2、图形化客户端【生产环境谨慎使用】

常见类型:

使用限制:

3、编程语言API客户端【生产环境主流方案】

典型实现:

性能对比:

四、Redis vs 内存HashMap的性能权衡

技术选型方法论

1. Redis适用场景检查表

2. 反模式警示

五、本章重点回顾

1、Redis 的 8 大特性

2、Redis 的适用场景

3、开发运维结合

4、安装与版本选择

5、服务管理


一、Redis 重要文件及作用

1、启动/停止命令与脚本

以下是 Redis 安装后常见的可执行文件,它们大多位于 /usr/bin 目录下:

/usr/bin/redis-benchmark用于对 Redis 进行性能基准测试的工具。通过模拟多个客户端并发访问,可评估 Redis 在不同配置下的吞吐量和响应时间。

/usr/bin/redis-check-aof → /usr/bin/redis-server修复 AOF(Append-Only File)持久化文件的工具。AOF 文件记录了所有写操作命令,若文件损坏,可通过此工具修复。

/usr/bin/redis-check-rdb → /usr/bin/redis-server修复 RDB(Redis Database)持久化文件的工具。RDB 是 Redis 的快照文件,此工具可修复损坏的快照。

/usr/bin/redis-cliRedis 命令行客户端程序,是学习阶段最常用的工具。通过它可与 Redis 服务器交互,执行命令、调试问题。

/usr/bin/redis-sentinel → /usr/bin/redis-serverRedis 哨兵程序,用于监控 Redis 主从集群,实现故障自动转移(Failover)和高可用性。

/usr/bin/redis-serverRedis 服务器程序,是核心服务进程。其他工具(如 redis-check-aofredis-sentinel)均为其软链接,通过不同参数启动不同功能。

/usr/libexec/redis-shutdown专用脚本,用于安全停止 Redis 服务。它会执行保存数据、清理资源等操作,避免直接使用 kill 命令导致数据丢失。

建议:相比直接运行上述命令,推荐使用 systemd 托管 Redis 服务(如 systemctl start/stop redis),以实现更可靠的进程管理和日志记录。

systemctl start/stop redis
systemctl restart redis

2、配置文件

/etc/redis.confRedis 服务器的主配置文件,包含监听端口、持久化方式、内存限制、安全设置等关键参数。修改后需重启 Redis 生效。

/etc/redis-sentinel.confRedis Sentinel 的配置文件,用于定义哨兵监控的主节点、故障判断阈值、通知方式等。

3、持久化文件存储目录

/var/lib/redis/Redis 默认将 RDB 快照和 AOF 文件存储在此目录。后续章节会详细分析持久化机制及其现象。

4、日志文件目录

/var/log/redis/Redis 运行日志默认存储在此目录,按天分割并压缩存储(gzip格式)。可通过日志排查问题,例如命令错误、连接异常等。这些文件可用任意文本编辑器打开。后续章节中,我们将通过分析这些日志来观察特定现象。


二、Redis 命令行客户端(redis-cli)

连接 Redis 服务器

启动 Redis 服务后,使用 redis-cli 连接并操作数据(Redis服务)。

redis-cli

Redis 采用典型的客户端-服务器(C/S)架构,其核心交互模式遵循以下流程:

客户端 → 发送请求 → 网络传输 → 服务端处理 → 返回响应 → 客户端

关键特性

  • 跨主机部署:客户端与服务器可分离部署(生产环境常见)

  • 同机部署:开发阶段通常在同一主机运行(通过127.0.0.1通信)

  • 网络中间件:实际生产中可能经过跳板机、堡垒机等安全设备

  • Redis 服务器(核心服务):负责数据的存储与管理

        Redis 客户端和服务器可以部署在同一主机上,也可以分布在不同的主机上。(在当前学习阶段,由于通常只有一台机器可用,客户端和服务器往往会运行在同一台机器上)

Redis-cli 提供两种连接 Redis 服务器的方式,如下:

方式一:交互式模式

redis-cli -h {host,即IP地址} -p {port,即端口号}

        通过 redis-cli -h {host,即IP地址} -p {port,即端口号} 进入交互式终端,后续命令直接输入(后续操作均为交互式进行,无需再执行redis-cli命令):

使用本地回环IP地址登录Redis客户端:

#如使用本地回环IP地址登录Redis客户端
redis-cli -h 127.0.0.1 -p 6379

使用自己云服务器的公网IP地址登录Redis客户端:

#如使用自己云服务器的公网IP地址登录Redis客户端
redis-cli -h 113.45.79.2 -p 6379

        重点:但是我们发现此时并不能如愿登录,即使我们已经将配置文件中的127.0.0.1修改为0.0.0.0也还是不行,我们回顾一下当时学习MySQL也是遇到了相同的问题,简直一模一样,所以我们这时恍然大悟,首先我们要在云服务器的控制台中配置安全组规则,如下:

        优先级设置为1,添加Redis的默认协议端口号6379,和源地址0.0.0.0,这样就可以在任意一台主机上连接登录我们云服务器上的Redis客户端了(同之前设置MySQL安全组规则一模一样):

添加安全组规则之后,然后再尝试回到终端使用公网IP登录Redis客户端,如下成功登陆连接:

方式二:命令模式

redis-cli -h {host,即IP地址} -p {port,即端口号} {command}

        直接通过 redis-cli -h {host,即IP地址} -p {port,即端口号} {command} 执行命令并获取结果,这种方法是登录Redis客户端之后,执行了command得到输出结果然后退出Redis客户端,再返回输出结果给Shell输出设备。如下:

使用本地回环IP地址登录Redis客户端:

#如使用本地回环IP地址登录Redis客户端
redis-cli -h 127.0.0.1 -p 6379 ping
redis-cli -h 127.0.0.1 -p 6379 set key hello
redis-cli -h 127.0.0.1 -p 6379 get key

使用自己云服务器的公网IP地址登录Redis客户端:

#如使用自己云服务器的公网IP地址登录Redis客户端
redis-cli -h 113.45.79.2 -p 6379 ping
redis-cli -h 113.45.79.2 -p 6379 set key hello
redis-cli -h 113.45.79.2 -p 6379 get key

注意事项

  • 若 Redis 运行在本地且使用默认端口 6379,可省略 -h 和 -p 参数。如下:

    #如使用本地回环IP地址登录Redis客户端,可省略 -h 和 -p 参数
    redis-cli ping
    redis-cli set key hello
    redis-cli get key

  • redis-cli 是学习 Redis 的核心工具,后续章节将深入介绍其高级功能(如管道、事务、Lua 脚本等)。


三、Redis 客户端形态全景

1、命令行客户端(redis-cli)【教学核心工具】(上面第二点这种)

基础用法

# 默认连接(127.0.0.1:6379)
root@hcss-ecs-1c15:/etc/redis# redis-cli
127.0.0.1:6379> quit# 指定主机端口
root@hcss-ecs-1c15:/etc/redis# redis-cli -h 113.45.79.2 -p 6379
113.45.79.2:6379>

生产环境注意事项

  • 需通过SSH隧道或VPN访问

  • 可能涉及权限认证(-a参数或AUTH命令)

  • 建议使用配置文件管理连接参数

2、图形化客户端【生产环境谨慎使用】

常见类型

  • 桌面应用:Redis Desktop Manager、Another Redis Desktop Manager

  • Web应用:phpRedisAdmin、FastoRedis

使用限制

  • Windows系统依赖问题

  • 企业网络防火墙限制

  • 性能监控功能有限

  • 教学建议:仅用于可视化演示,不推荐生产环境使用

        一句话来说:这类图形化程序通常依赖 Windows 系统运行。但在实际工作环境中,由于办公 Windows 系统与服务器之间的连接可能存在多种限制,你的图形化界面客户端能否成功连接服务器端的 Redis 服务存在很大不确定性(MySQL 同理)。此外,连接过程中往往需要经过多重跳板机、堡垒机,以及复杂的权限验证流程。

3、编程语言API客户端【生产环境主流方案】

典型实现

  • Java:Jedis、Lettuce(Spring Data Redis集成)

  • Python:redis-py(支持异步)

  • Go:go-redis

  • Node.js:ioredis

性能对比

客户端类型延迟(μs)吞吐量(ops)适用场景
同步客户端150-3008,000-12,000简单CRUD操作
异步客户端80-12025,000-40,000高并发管道操作
连接池客户端60-10050,000+微服务架构

四、Redis vs 内存HashMap的性能权衡

问题引入:Redis的速度优势是相对于MySQL这类关系型数据库而言的。但如果直接与内存中的变量操作相比,Redis就没有优势了,甚至会更慢。那么,是该用Redis存储数据,还是直接在内存中使用HashMap呢?

关键区别在于:HashMap是直接操作内存,而Redis需要先经过网络传输,再操作内存。

方案对比各有各的优势和劣势,主要看业务的应用方面(具体问题具体分析)

方案实现方式优势劣势
本地HashMapMap<String, Integer>零网络延迟进程重启数据丢失
内存访问速度最快(~50ns)无法共享数据
Redis集群SET video:123:likes 42数据持久化网络延迟(~200-500μs)
多进程/服务共享需要序列化开销
支持分布式扩展运维复杂度增加

决策树

  • 是否需要持久化?→ 是 → Redis;→ 否 → 继续

  • 是否需要多进程访问?→ 是 → Redis;→ 否 → 本地HashMap

  • 是否可能扩展为分布式?→ 是 → Redis;→ 否 → 本地HashMap

关键结论

  • 本地HashMap比Redis快约20,000倍(单次操作)

  • 但Redis提供:数据持久化、跨进程共享、水平扩展能力、丰富的数据结构

技术选型方法论

1. Redis适用场景检查表

需求维度Redis适配度
数据持久化★★★★★
高并发读写★★★★☆
复杂查询★☆☆☆☆
跨服务共享★★★★★
简单键值存储★★★☆☆
大容量存储★☆☆☆☆

2. 反模式警示

        在决定引入某项技术时,必须全面考量其来龙去脉,明确它能解决哪些问题,同时也要预判可能带来的新问题。切忌盲目跟风,陷入"手里有锤子,看什么都像钉子"的思维误区。

"锤子思维"典型表现

  • 用Redis存储所有会话数据(应考虑内存成本)

  • 用Redis实现复杂关系查询(应使用关系型数据库)

  • 用Redis作为主要存储而忽略备份策略

核心原则:技术选型应遵循"合适优于先进",Redis是强大的工具但非银弹,需根据具体业务场景权衡决策。


五、本章重点回顾

1、Redis 的 8 大特性

  • 速度快(基于内存、单线程模型)

  • 键值对数据结构服务器

  • 功能丰富(支持字符串、哈希、列表、集合等)

  • 简单稳定(代码精简、依赖少)

  • 多语言客户端支持

  • 持久化(RDB/AOF)

  • 主从复制与高可用

  • 分布式支持(集群模式)

2、Redis 的适用场景

Redis 并非万能,不适合存储大量非热点数据或需要复杂查询的场景(如关系型数据库的联表操作)。

3、开发运维结合

  • 开发人员需理解 Redis 的数据结构与命令。

  • 运维人员需掌握监控、调优和故障排查。

  • 阅读源码可深入理解实现原理。

4、安装与版本选择

  • 根据需求选择稳定版本(如 LTS 版本)。

  • 推荐使用包管理器(如 yum/apt)或官方源码编译安装。

5、服务管理

  • 优先使用 systemd 托管 Redis,实现自动启动、日志管理和资源限制。

通过掌握上述内容,我们已具备 Redis 的基础运维能力,后续章节将深入讲解数据结构、集群、性能优化等高级主题。

http://www.dtcms.com/a/473727.html

相关文章:

  • 使用 httpsok 给 QNAP NAS 添加阿里云域名的永久免费 HTTPS(SSL)证书
  • AI加持的SEO新纪元:用提示词打造高质量内容生产线
  • Manim环境搭建--FFmpeg环境安装
  • JAVA集合框架详解
  • svn and maven 自动部署shell脚本
  • 电影网站如何做长尾关键词网站建立需要什么技术
  • 网站制作英文版网站肥西县建设局资询网站
  • 腾讯开源80B参数混元图像3.0模型:AI作画正在“拥有大脑”
  • HTTP 的方法和状态码
  • 废品网站怎么做wordpress 评论 顶踩 心 插件
  • 用AI重构HR Tech:绚星绚才,将HR专业能力转化为业务增长引擎
  • R绘制股票日波动线图 中国海油600938
  • Mysql和MyBatis的缓存机制
  • 免费建站系统官网上海seo有哪些公司
  • Linux系统--进程间通信--共享内存(主使用)
  • BOOST电路的一些小理解
  • JavaWeb登录模块完整实现解析:从前端点击到后端验证的全流程
  • 【pytorch】合并与分割
  • 从AI画稿到3D虚拟时装:Illustrator与Substance 3D的服装设计工作流
  • 【VGGT-X】:尝试将VGGT用到3DGS重建中去
  • 海珠区建设和水务局网站网站建设夜猫
  • 用 Go 优雅应对网络抖动与断线重连:打造健壮的网络应用
  • C++ : 智能指针的补充和特殊类的设计
  • 【完整源码+数据集+部署教程】 航拍水体检测图像分割系统源码和数据集:改进yolo11-DLKA
  • 公司查询网站查询系统景点介绍网站开发设计
  • 如何定位 TCP TIME_WAIT ,并优化这个问题
  • DDD记账软件实战四|从0-1设计实现企业级记账微服务
  • 考研408《计算机组成原理》复习笔记,第七章(1)——I/O接口
  • 建设部网站在哪里报名考试大德通网站建设
  • Java 泛型基础:从类型安全到泛型类 / 方法 / 接口全解析