Redis 安装与配置教程 (Windows, Linux, macOS)

好的,这是一篇详细的 Redis 安装与配置教程,涵盖 Windows、Linux 和 macOS 三大操作系统。

Redis (Remote Dictionary Server) 是一个高性能的开源键值对存储数据库。它支持多种数据结构,常用于缓存、消息队列和会话存储等场景。本教程将指导您在不同操作系统上安装和配置 Redis。

1. Windows 系统安装

Windows 系统安装 Redis 相对简单,官方推荐使用预编译的安装包。

  1. 下载安装包:
    • 访问 Redis 的 Windows 版本项目页面 (例如:https://github.com/microsoftarchive/redis)。请注意,官方 Redis 主要支持 Linux/BSD,Windows 版本由社区维护。
    • 在 Releases 页面找到最新的稳定版本 (如 Redis-x64-3.0.504.msi) 并下载。
  2. 运行安装程序:
    • 双击下载的 .msi 文件启动安装向导。
    • 接受许可协议,选择安装路径(默认通常是 C:\Program Files\Redis),并勾选将 Redis 安装目录添加到 PATH 环境变量(方便命令行使用)。
    • 点击 Install 开始安装。
  3. 验证安装:
    • 安装完成后,打开命令提示符 (cmd) 或 PowerShell。
    • 输入命令 redis-server --versionredis-cli --version。如果看到 Redis 的版本信息(如 Redis server v=3.0.504),则说明安装成功。
  4. 运行 Redis:
    • 默认情况下,安装程序会将 Redis 配置为 Windows 服务并自动启动。您可以在 Windows 服务管理器中查看 Redis 服务的状态(Win+R -> services.msc)。
    • 您也可以通过命令行启动 Redis 服务:redis-server。这会使用默认配置在前台运行。按 Ctrl+C 可停止。
  5. 使用 Redis 客户端:
    • 打开另一个命令提示符窗口。
    • 输入 redis-cli 启动 Redis 命令行客户端。

尝试基本命令:

127.0.0.1:6379> ping PONG 127.0.0.1:6379> set mykey "Hello Redis" OK 127.0.0.1:6379> get mykey "Hello Redis" 
2. Linux 系统安装 (以 Ubuntu/Debian 为例)

Linux 系统通常通过包管理器安装 Redis,也可以选择源码编译安装以获得最新版本。

方法一:使用包管理器安装 (推荐)

  1. 启动 Redis 服务:

使用 Redis 客户端:

redis-cli 127.0.0.1:6379> ping PONG 

验证安装:

redis-cli --version redis-server --version 

设置开机自启:

sudo systemctl enable redis-server 

如果未启动,手动启动:

sudo systemctl start redis-server 

安装完成后,Redis 服务通常会自动启动。检查状态:

sudo systemctl status redis-server 

安装 Redis:

sudo apt install redis-server 

更新包索引:

sudo apt update 

方法二:源码编译安装 (获取最新版本)

  1. 下载源码:
    • 访问 Redis 官方网站 (https://redis.io/download) 获取最新稳定版下载链接。
  2. 配置与运行:
    • Redis 默认安装在 /usr/local/bin
    • 使用 redis-cli 连接测试。

启动服务:

redis-server /etc/redis/redis.conf 

复制配置文件模板并编辑:

sudo mkdir /etc/redis sudo cp redis.conf /etc/redis/redis.conf sudo nano /etc/redis/redis.conf # 根据需要修改配置,如 `daemonize yes` 以守护进程运行 

安装到系统目录:

sudo make install 

编译完成后,可以运行测试(可选但推荐):

make test 

编译安装:

make 

下载并解压:

wget https://download.redis.io/releases/redis-7.2.4.tar.gz # 替换为最新版本号 tar xzf redis-7.2.4.tar.gz cd redis-7.2.4 

安装编译依赖:

sudo apt update sudo apt install build-essential tcl 

其他 Linux 发行版:

Arch Linux:

sudo pacman -S redis sudo systemctl start redis.service sudo systemctl enable redis.service 

CentOS/RHEL/Fedora:

sudo yum install epel-release # 或 sudo dnf install epel-release sudo yum install redis # 或 sudo dnf install redis sudo systemctl start redis sudo systemctl enable redis 
3. macOS 系统安装 (使用 Homebrew)

macOS 上推荐使用 Homebrew 安装 Redis。

  1. 启动 Redis 服务:

使用 Redis 客户端:

redis-cli 127.0.0.1:6379> ping PONG 

验证安装:

redis-cli --version redis-server --version 

检查服务状态:

brew services list 

或者,手动启动(前台运行):

redis-server /usr/local/etc/redis.conf 

安装完成后,可以使用以下命令启动 Redis,并设置为开机自启:

brew services start redis 

使用 Homebrew 安装 Redis:

brew update brew install redis 

安装 Homebrew (如果尚未安装):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 
4. 基本配置 (所有系统)

无论哪种安装方式,通常都需要了解并可能修改配置文件以满足需求。配置文件通常名为 redis.conf

  1. 找到配置文件:
    • Windows: 安装目录下 (如 C:\Program Files\Redis\redis.conf)。
    • Linux (包管理安装): /etc/redis/redis.conf
    • Linux (源码安装): 编译目录下的 redis.conf,或复制到 /etc/redis/
    • macOS (Homebrew): /usr/local/etc/redis.conf
  2. 常用配置项:
    • daemonize yes/no: 是否以守护进程(后台)方式运行。
    • port 6379: Redis 监听的端口号。
    • bind 127.0.0.1: 绑定的主机地址。0.0.0.0 表示允许所有网络接口连接(注意安全风险)。
    • requirepass yourpassword: 设置连接密码(强烈建议在生产环境设置)。
    • databases 16: 默认数据库数量。
    • dir ./: RDB 持久化文件存储目录。建议设置为明确的路径(如 /var/lib/redis)。
    • dbfilename dump.rdb: RDB 持久化文件名。
    • appendonly yes/no: 是否启用 AOF (Append Only File) 持久化。
    • appendfilename "appendonly.aof": AOF 文件名。
  3. 修改配置后重启服务:
    • Windows: 在服务管理器中重启 Redis 服务。
  4. 设置密码连接:
    • redis.conf 中设置 requirepass your_strong_password
    • 重启 Redis。

连接客户端时需要认证:

redis-cli 127.0.0.1:6379> auth your_strong_password OK 

或者:

redis-cli -a your_strong_password # 注意:密码会出现在命令历史中,不安全 

macOS (Homebrew):

brew services restart redis 

Linux (systemd):

sudo systemctl restart redis-server 
5. 基础操作与验证
  • 启动服务:根据上述系统说明启动 Redis 服务 (redis-server 或服务管理命令)。
  • 连接客户端redis-cli
  • 测试连接:在 redis-cli 中执行 ping,应返回 PONG
  • 退出客户端quitexit
  • 停止服务
    • redis-cli 中执行 shutdown (需要权限)。
    • 或者使用系统服务管理命令停止 (如 sudo systemctl stop redis-server)。

设置/获取键值

set mykey "Hello Redis" get mykey 
6. 防火墙配置 (如果需要远程访问)

如果需要在其他机器上访问 Redis 服务器,需要确保服务器的防火墙允许 Redis 端口 (默认 6379/tcp) 的入站连接。

  • Windows: 在 Windows Defender 防火墙中添加入站规则,允许 TCP 端口 6379
  • macOS: 在 系统偏好设置 -> 安全性与隐私 -> 防火墙 -> 防火墙选项 中添加端口 6379

Linux (firewalld):

sudo firewall-cmd --permanent --add-port=6379/tcp sudo firewall-cmd --reload 

Linux (ufw):

sudo ufw allow 6379/tcp sudo ufw reload 

注意:开放端口后,务必在 redis.conf 中设置强密码 (requirepass) 并考虑限制可访问的 IP (bind 或使用防火墙规则),以保障安全。

7. 常见问题
  • 端口 6379 被占用:检查是否有其他程序占用了该端口,或修改 redis.conf 中的 port 配置。
  • 权限问题:确保 Redis 进程有权限读写配置中指定的目录(如持久化目录 dir)。
  • 连接失败:检查 Redis 服务是否正在运行 (ps aux | grep redis-server),检查防火墙设置,检查 bind 配置是否正确。
  • 配置文件错误:修改配置文件后重启服务失败,可能是配置语法错误。仔细检查修改的部分。

希望这篇详细的教程能帮助您顺利地在 Windows、Linux 和 macOS 系统上安装和配置 Redis!开始您的 Redis 之旅吧!

Read more

【数据结构与算法】21.合并两个有序链表(LeetCode)

【数据结构与算法】21.合并两个有序链表(LeetCode)

文章目录 * 合并两个有序链表:高效算法解析与实现 * 问题描述 * 核心思路:双指针尾插法 * 完整代码实现 * 关键点解析 * 1. 边界条件处理 * 2. 头节点初始化 * 3. 节点比较与插入 * 4. 剩余节点处理 * 常见错误与修正 * 优化方案:哨兵节点 * 算法应用场景 * 总结 * 总结 合并两个有序链表:高效算法解析与实现 链表合并是数据结构中的经典问题,在算法面试和实际开发中经常出现。本文将深入解析如何高效合并两个有序链表,并展示C语言的实现方案。 问题描述 给定两个升序排列的链表list1和list2,要求将它们合并为一个新的升序链表并返回。新链表应该通过拼接给定链表的节点来完成。 示例: 输入:list1 = [1,2,4], list2 = [1,3,4] 输出:[1,1,2,3,4,4] 核心思路:

By Ne0inhk

【学习记录】使用 John the Ripper 和 Hashcat破解 RAR、ZIP 与 7z 文件密码(Windows教程)

文章目录 * 📌 引言 * 📦 支持类型 * 🛠️ 所需工具下载地址(Windows 官方编译版) * 额外工具 * 🔐 一、破解RAR 压缩文件密码 * 步骤 1:获取RAR 文件的加密哈希值 * 步骤 2:将正确的哈希值复制到 `hash.txt` 文件 * 步骤 3:在 Hashcat 官方 wiki 查找 `-m` 哈希模式 ID * 步骤 4: 使用 Hashcat 破解哈希值 * 📁 二、破解ZIP 压缩文件密码 * 步骤 1:提取 ZIP 文件的加密哈希值 * 步骤 2:将正确的哈希值复制到 `hash.txt` 文件 * 步骤

By Ne0inhk
Flutter 三方库 collection — 鸿蒙应用全方位集合操作与算法增强利器,实现鸿蒙深度适配下的高效容器过滤与优先级队列实战全解析(适配鸿蒙 HarmonyOS Next ohos)

Flutter 三方库 collection — 鸿蒙应用全方位集合操作与算法增强利器,实现鸿蒙深度适配下的高效容器过滤与优先级队列实战全解析(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter 三方库 collection — 鸿蒙应用全方位集合操作与算法增强利器,实现鸿蒙深度适配下的高效容器过滤与优先级队列实战全解析 前言 在鸿蒙(OpenHarmony)应用开发中,数据结构的选择往往决定了逻辑的成败。当标准的 List、Set、Map 无法满足更高级的需求(例如:需要一个自动按优先级排序的任务队列,或者需要判断两个深度嵌套的 Map 是否完全一致)时,开发者就需要引入更强大的集合支持。 collection 是 Dart 官方维护的最核心基础库之一。它不仅补充了大量缺失的容器类型(如 PriorityQueue、Heap),还为原生集合提供了极其丰富的扩展工具类(如 ListEquality、CanonicalizedMap)。在 Flutter for OpenHarmony 的底层架构实践中,它是处理复杂业务逻辑、优化检索效率的必备“基石”。 一、原理解析 / 概念介绍

By Ne0inhk
【数据结构】常见时间复杂度以及空间复杂度

【数据结构】常见时间复杂度以及空间复杂度

时间复杂度与空间复杂度 * 一、复杂度的概念 * 二、时间复杂度 * 1、大O的渐进表示法 * 2、函数clock计算运算时间 * 3、常见复杂度对比 * 3.1常数项复杂度 * 3.2线性时间复杂度 * 案例1 * 案例2 * 3.3平方阶复杂度 * 3.4对数复杂度 * 3.5递归函数 * 单递归 * 双递归 * 三、空间复杂度 * 冒泡排序O(1) * 三个反置O(N) 一、复杂度的概念 * 一个算法的好坏,主要是对比两者的时间和空间两个维度,也就是时间和空间复杂度。 * 时间复杂度主要衡量一个算法运行的快慢,空间复杂度主要衡量一个算法运行需要的额外空间 二、时间复杂度 * 算法的时间复杂度是一个函数式T(N),算法中的基本操作的执行次数,为算法的时间复杂度。 * 注:编译器的不同,编译所需要的时间也不同。越新的编译器,编译的时间往往比旧的编译器快 * 当一个算法函数式为T(

By Ne0inhk