news 2026/4/29 20:52:49

Redis基础使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis基础使用

Redis基础使用

  • 下载
  • 启动
  • 数据库操作
  • Redis的应用场景

下载

官网下载地址如下:
3.0:http://download.redis.io/releases/redis-3.0.0.tar.gz
4.0:http://download.redis.io/releases/redis-4.0.14.tar.gz
5.0:http://download.redis.io/releases/redis-5.0.14.tar.gz
6.2:http://download.redis.io/releases/redis-6.2.14.tar.gz

将 redis-5.0.4.tar.gz 拷贝到服务器 /usr/local/src/redis 目录下,使用 tar -zxvf redis-5.0.4.tar.gz 命令进行解压

也可以在 Linux 服务器终端执行wget命令,直接下载源码压缩包到当前目录,无需手动上传:

# 下载3.0.4版本wgethttp://download.redis.io/releases/redis-3.0.4.tar.gz# 下载4.0.14版本wgethttp://download.redis.io/releases/redis-4.0.14.tar.gz# 下载5.0.14稳定版wgethttp://download.redis.io/releases/redis-5.0.14.tar.gz

如果直接访问官网下载速度慢,可使用国内镜像源,速度更快:

# 阿里云镜像下载5.0.14版本wgethttps://mirrors.aliyun.com/redis/releases/redis-5.0.14.tar.gz# 阿里云镜像下载6.2.14版本wgethttps://mirrors.aliyun.com/redis/releases/redis-6.2.14.tar.gz

下面需要进入下载的 Redis 实例目录

cd/usr/local/src/redis/redis-5.0.4

Redis 的核心代码全部由 C 语言编写,而 C 语言属于编译型语言,源码必须先通过编译器转换成和当前操作系统 / 硬件架构匹配的二进制机器码(即可执行文件),电脑才能直接运行,而 make 就是自动化完成这一系列编译步骤的工具。并且由于 Redis 是跨平台软件,不同操作系统、不同硬件架构的机器码指令集和二进制格式不同,而源码包是通用的,make编译时会读取 Redis 的Makefile文件,并调用编译器自动检测你的系统环境,编译出适配当前环境的二进制可执行文件(如redis-server)。

make

安装目录如下:

其中 redis.conf 是 redis 的配置文件

port 用于设置 redis 进程的端口,默认是 6379

设置 redis 可远程访问(3.0默认允许,4.0需要手动设置)
默认是 bind 127.0.0.1,仅允许本地访问,修改为 bind 0.0.0.0,允许所有 IP 访问

另外还有预编译包安装 Redis 的方式在我这篇博客里有详细介绍 前后端分离项目 Springboot+vue 在云服务器上的部署

启动

前端模式启动

前端模式启动无需修改任何配置(默认daemonize=no),开箱即用

进入Redis安装目录的 src 目录,redis-server 是 Redis 的服务启动程序

./redis-server

Redis 直接占用当前终端,所有日志实时输出到终端;前端模式启动的缺点是ssh命令窗口关闭则 redis-server 程序结束,不推荐使用此方法。

后台启动

修改 redis.conf 配置文件, daemonize yes 后端模式启动

加载指定配置并启动 Redis

./src/redis-server ./redis.conf

查看 Redis 进程

ps-ef|grepredis

Redis 以守护进程形式运行在系统后台,终端可正常输入其他命令,即使关闭终端,Redis 进程仍持续运行;日志会输出到配置文件指定的日志文件。

终止 Redis 服务

./redis-clishutdown

若端口号不是6379,那么需要将其更换成对应的端口号

./redis-cli-p6380shutdown

通过客户端向 Redis 服务端发送停止指令,服务端接收到指令后会按固定流程主动退出。

若如果直接用 kill 命令强制终止 Redis 进程,会导致数据丢失、文件损坏、资源泄漏、客户端异常。

为什么不能用 redis-server 停止?
redis-server 是 Redis 的启动程序,其核心功能是 “加载配置、启动服务进程”,而非管理进程生命周期。若使用 ./redis-server shutdown 会报错,因为 redis-server 会把 shutdown 当成配置文件路径,而非停止指令。

启动客户端

进入Redis安装目录的 src 目录,redis-cli 连接已运行的 Redis 服务,启动客户端程序

./redis-cli

如果 Redis 服务运行在非 6379 端口,需加 -p 参数指定端口

PING 是 Redis 的 “心跳检测” 命令,核心作用是验证客户端和 Redis 服务端的连接是否通畅

启动多个redis进程

第一种方式:创建多个 redis 实例,分别启动各个 redis 实例。

安装新的 redis 实例后,修改新 redis 实例配置文件的端口号,避免端口冲突,启动时指定端口可在一台服务器启动多个redis进程

./redis-server ./redis.conf--port6380

每个终端启动一个 redis-cli,可连接同一个或不同的 Redis 实例

另一种方式:同一台服务器上只有一套 Redis 安装程序,通过多个独立的配置文件,启动多个独立的 Redis 进程。

/usr/local/src/redis 下创建 conf 目录,用于存放所有的 conf 配置文件:

mkdirconf

基于原 redis.conf 复制配置文件,一份配置文件对应一个 Redis 节点:

cp../redis-5.0.4/redis.conf redis_6379.confcp../redis-5.0.4/redis.conf redis_6380.conf

修改各个配置文件内的端口号和 dbfilenam 快照文件名称,再启动各个 redis 进程

../redis-5.0.4/src/redis-server ./redis_6379.conf../redis-5.0.4/src/redis-server ./redis_6380.conf

指定端口号停止 redis 进程

../redis-5.0.4/src/redis-cli-p26380shutdown

数据库操作

单个 Redis 实例默认划分16 个逻辑数据库,下标从0到15(这是 Redis 的默认配置,可修改但不推荐);
客户端连接 Redis 后,默认使用 0 号数据库,所有命令都作用于当前数据库;
redis 不支持修改数据库的名称,可通过 SELECT 命令切换到指定数据库,切换后所有操作仅对该数据库生效。

每个数据库的键是独立的,相同的键名在不同数据库中互不影响

清空库操作:
FLUSHDB 仅作用于当前数据库,只清空你当前选中的数据库,其他库数据完全保留;
FLUSHALL 作用于整个 Redis 实例清空,0-15 号所有数据库的所有数据。

FLUSHDB:

FLUSHALL:

Redis的应用场景

  • 缓存:Redis 最著名的应用场景是将热点数据存储在内存中,以提高访问效率。这包括但不限于用户信息、文章列表、商品详情等常用数据,可极大降低后端数据库压力。
  • 实时排行榜:利用有序集合(Sorted Set)存储用户操作数据(如点赞数、评论数、游戏积分等),根据分值进行排序,实现实时排行榜功能。
  • 消息队列:早期常用 List 实现简单的消息队列(LPUSH/RPOP),但存在无确认、消息易丢失等问题。Redis 5.0 引入的 Stream 类型提供了消费组、ACK 确认等机制,成为更成熟的内存消息队列方案,可支撑高吞吐量的异步任务处理。
  • 计数器:Redis 单线程模型天然保证计数操作的原子性,避免了并发问题,且性能可达微秒级,非常适合统计点击数、点赞数、库存扣减等场景。
  • 队列串行化:在某些简单业务中,利用 Redis 队列将高并发请求转为串行处理,比如秒杀系统的请求排队削峰。
  • 位操作:在大数据量场景下,如用户签到、去重登录次数统计、在线状态查询等,使用位图(Bitmap)及相关命令(SETBIT、GETBIT、BITCOUNT)可获得极高的空间和时间效率。
  • 数据过期处理:Redis 支持为 key 设置精确到亳秒的过期时间(PEXPIRE),适用于验证码、限时优惠券、缓存自动刷新等需要自动失效的场景。
  • 分布式 Session 共享:在分布式集群架构中,将用户 Session 集中存储到 Redis,可实现多服务实例间的会话共享,避免单点登录问题。
  • 分布式锁:利用 SETNX + 过期时间(或官方 Redlock 算法),实现跨进程、跨机器的互斥锁,保护共享资源。
  • 发布/订阅:通过 Pub/Sub 功能实现实时的消息推送,如聊天室、系统广播通知。
  • 地理位置服务:GEO 数据结构支持存储经纬度并计算两点距离,实现“附近的人”、“门店距离排序”等 LBS 应用。
  • 限流:结合计数器与过期时间,实现滑动窗口限流,保护 API 接口不被恶意刷量。

Redis 的应用场景非常多样,它不仅可以作为缓存加速 Web 应用,还能在排行榜、消息队列、分布式锁、计数器、Session 共享、地理位置等领域发挥关键作用,是构建高性能分布式系统的基石组件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 20:50:32

TLPI 第16章 读书笔记:Extended Attributes

笔记和练习博客总目录见:开始读TLPI。 本章介绍了扩展属性(EAs),它们允许以名称-值对的形式将任意元数据与文件 i 节点关联。EAs 在 Linux 2.6 版本中被添加。 16.1 Overview EAs 用于实现访问控制列表(第17章&…

作者头像 李华
网站建设 2026/4/29 20:49:17

Phi-4-mini-reasoning模型API接口测试实战:使用Postman与Python脚本

Phi-4-mini-reasoning模型API接口测试实战:使用Postman与Python脚本 1. 引言:为什么需要API测试 当你部署好Phi-4-mini-reasoning模型后,API接口就成了与模型交互的唯一通道。作为测试工程师或开发者,你需要确保这个通道在各种情…

作者头像 李华
网站建设 2026/4/29 20:48:41

实现一个简单的正则表达式引擎

文章目录实现一个简单的正则表达式引擎 🚀正则表达式基础 📖实现思路 🧠实现解析器(Parser)🔍构建NFA 🏗️实现匹配算法 ⚡整合引擎 🧩性能优化 💨扩展功能 &#x1f527…

作者头像 李华
网站建设 2026/4/29 20:46:25

MCP 协议核心原理解密:Message、Transport 与 Capability 的深度拆解

系列导读 你现在看到的是《MCP 协议与工具调用体系深度实践:从原理到生产落地的全栈指南》的第 2/10 篇,当前这篇会重点解决:用协议级别的细节拆解,让读者能亲手解析一个 MCP 消息,而不仅仅是概念理解。 上一篇回顾:第 1 篇《MCP 协议的前世今生:为什么我们需要一个统…

作者头像 李华
网站建设 2026/4/29 20:46:24

C++20 Concepts:让模板编程从“黑魔法”走向“契约时代”

如果说 C 模板是泛型编程皇冠上的明珠,那么在 C20 之前,这颗明珠一直被一层名为 SFINAE 的迷雾笼罩。直到 Concepts(概念) 的出现,模板才真正拥有了类型安全、语义清晰、易于调试的现代化外衣。 本文将带你快速掌握 Co…

作者头像 李华