Redis 体系之在不同平台上安装 Redis:一站式指南

当涉及到高速缓存和数据存储时,Redis(Remote Dictionary Server)是一个强大而流行的选择。它是一个开源的内存数据存储系统,常被用作缓存、消息中间件以及数据存储解决方案。本篇博客将为你提供关于在不同平台上安装 Redis 的详细指南,帮助你快速开始使用这一高性能的数据存储工具。

前言

Redis 的多平台支持使其在不同操作系统上的安装变得十分便捷。无论你是在 Linux、Windows、Docker 还是 macOS 上使用 Redis,我们都为你准备了详细的安装步骤和指导。以下是本篇博客的主要内容:

  1. Linux 平台安装指南: 在 Linux 上安装 Redis 是一项基本任务,本节将带你一步步完成从下载到编译和安装的全过程。
  2. Windows 平台安装指南: 对于 Windows 用户,Redis 提供了专门的 Windows 版本。我们将演示如何在 Windows 操作系统上快速安装 Redis。
  3. Docker 平台安装指南: Docker 是流行的容器化平台,它能够轻松地部署 Redis 容器。我们将指导你在 Docker 上运行 Redis 容器的方法。
  4. macOS 平台安装指南: macOS 用户也能够轻松安装和使用 Redis。我们将分享如何使用 Homebrew 在 macOS 上安装和配置 Redis。

Linux 平台安装指南

确保 Linux 能够连接外网

源码包方式

在线下载 Redis 源码包

bash 复制代码
wget http://download.redis.io/releases/redis-6.0.8.tar.gz

解压 Redis 源码包

bash 复制代码
tar xzf redis-6.0.8.tar.gz

进入解压后的文件夹后编译并执行安装

bash 复制代码
cd redis-6.0.8

sudo make && make install

包管理器安装

Ubuntu

在 Ubuntu 上,你可以使用以下命令安装 Redis:

bash 复制代码
sudo apt-get update
sudo apt-get install redis-server

CentOS

在 CentOS 上,可以使用 yum 安装:

bash 复制代码
sudo yum install epel-release
sudo yum install redis

Windows 安装

Redis 下载

访问 Redis 官方 GitHub 仓库的 Windows 版本下载页面:github.com/tporadowski...

当前最新版 5.0.14,下载 Redis-x64-5.0.14.msi 或 Redis-x64-5.0.14.zip ,

使用 msi 安装

使用 msi 安装是将 Redis 安装成 windows 服务。这样 Redis 会被设置成开机自启的状态

  1. 双击【Redis-x64-5.0.14.msi】运行安装,选择安装路径,安装路径最好不要带空格,避免可能出现不可预知的错误
  1. 勾选将 redis 安装信息添加到环境变量,安装过程在对话框中输入最大内存数为 4096MB,表示最大 4GB。

  2. 一直 Next 下去等待安装完成即可

修改 Redis Windows 版本配置文件

按照以下配置修改即可

bash 复制代码
#bind 127.0.0.1             #注释掉这一句,使redis可以外部访问
port 6379                   #默认端口,可以改成别的端口
protected-mode no          #修改为no,开启保护模式,默认是yes
#daemonize no               #这一句是注释的,windows 版本不支持,默认是no
requirepass 123456          #密码
appendonly yes              #aof持久化,默认是no

重启 Redis 服务使修改生效,安装完成。

使用 zip 文件安装

  1. 下载 zip 文件到某个文件夹中

  2. 解压 redis.zip 并进入相关文件夹

  1. 打开 cmd 窗口,进入 redis-x64-5.0.14 文件夹,执行命令:
bash 复制代码
redis-server.exe redis.windows.conf  #指定配置文件启动
或者
redis-server.exe  #用默认的配置启动
  1. 验证 Redis 是否启动成功

启动的临时 redisd 服务,当关掉 cmd 服务端窗口后,redis 就关掉了

Windows 常用命令

  • 卸载服务:redis-server --service-uninstall --service-name redis (redis 是服务名)

  • 开启服务:redis-server --service-start --service-name redis(redis 是服务名)

  • 停止服务:redis-server --service-stop --service-name redis(redis 是服务名)

  • 卸载默认服务:redis-server --service-uninstall

  • 开启默服务:redis-server --service-start

  • 停止默服务:redis-server --service-stop

Docker 安装

查看是否安装 Redis

bash 复制代码
docker ps # 查看正在运行的容器
docker ps -a # 查看全部的容器,包括已经停止的

下载 Redis 镜像

bash 复制代码
docker pull redis  # 下载最新版 redis 镜像

docker pull redis:6.0.8  # 下载 redis 6.0.8 镜像

基于 Redis 镜像启动容器

bash 复制代码
docker run \ 
-d \ # 后台启动
--name redis \ # 启动容器的名字
-p 6379:6379 \ # 主机端口和容器端口互相映射
--restart always \  # 容器重启策略
-v /home/redis/data:/data \ # 将 Redis 数据文件夹挂在到主机下
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
redis-server /etc/redis/redis.conf \ # 以 redis.conf 文件启动

查看 Redis 容器是否运行成功

bash 复制代码
docker ps | grep redis

Docker-compose 安装

编写 Redis 配置文件

bash 复制代码
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid  
daemonize no  
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定  
pidfile /var/run/redis.pid  
# 指定Redis监听端口,默认端口为6379  
# 如果指定0端口,表示Redis不监听TCP连接  
port 6379  
# 绑定的主机地址  
# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接  
# bind 127.0.0.1  
# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能  
timeout 0  
# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose  
# debug (很多信息, 对开发/测试比较有用)  
# verbose (many rarely useful info, but not a mess like the debug level)  
# notice (moderately verbose, what you want in production probably)  
# warning (only very important / critical messages are logged)  
loglevel verbose  
# 日志记录方式,默认为标准输出,如果配置为redis为守护进程方式运行,而这里又配置为标准输出,则日志将会发送给/dev/null  
logfile /logs/redis.log  
# 设置数据库的数量,默认数据库为0,可以使用select <dbid>命令在连接上指定数据库id  
# dbid是从0到'databases'-1的数目  
databases 16  
################################ SNAPSHOTTING #################################  
# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合  
# 满足以下条件将会同步数据:  
# 900秒(15分钟)内有1个更改  
# 300秒(5分钟)内有10个更改  
# 60秒内有10000个更改  
# Note: 可以把所有"save"行注释掉,这样就取消同步操作了  
save 900 1  
save 300 10  
save 60 10000  
# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大  
rdbcompression yes  
# 指定本地数据库文件名,默认值为dump.rdb  
dbfilename dump.rdb  
# 工作目录.  
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定  
#  
# Also the Append Only File will be created inside this directory.  
#  
# 注意,这里只能指定一个目录,不能指定文件名  
dir ./  
################################# REPLICATION #################################  
# 主从复制。使用slaveof从 Redis服务器复制一个Redis实例。注意,该配置仅限于当前slave有效  
# so for example it is possible to configure the slave to save the DB with a  
# different interval, or to listen to another port, and so on.  
# 设置当本机为slav服务时,设置master服务的ip地址及端口,在Redis启动时,它会自动从master进行数据同步  
# slaveof <masterip> <masterport>  
# 当master服务设置了密码保护时,slav服务连接master的密码  
# 下文的"requirepass"配置项可以指定密码  
# masterauth <master-password>  
# 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过auth <password>命令提供密码,默认关闭  
#requirepass yourpassword  
# 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,  
# 如果设置maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max Number of clients reached错误信息  
# maxclients 128  
# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,  
# 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。  
# Redis新的vm机制,会把Key存放内存,Value会存放在swap区  
maxmemory 500mb  
 
maxmemory-policy volatile-lru  
# 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。  
# 因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no  
# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append  
# log file in background when it gets too big.  
  
appendonly yes  
  
# 指定更新日志文件名,默认为appendonly.aof  
appendfilename appendonly.aof  
# 指定更新日志条件,共有3个可选值:  
# no:表示等操作系统进行数据缓存同步到磁盘(快)  
# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)  
# everysec:表示每秒同步一次(折衷,默认值)  
  
appendfsync everysec  
# appendfsync no  
  
#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。  
auto-aof-rewrite-percentage 100  
#当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。  
auto-aof-rewrite-min-size 32mb  
 
slowlog-log-slower-than 10000  
  
slowlog-max-len 1024  
  
# 指定是否启用虚拟内存机制,默认值为no,  
# VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中  
# 把vm-enabled设置为yes,根据需要设置好接下来的三个VM参数,就可以启动VM了  
# vm-enabled no  
# vm-enabled yes  

# Redis交换文件最好的存储是SSD(固态硬盘)  
# 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享  

# 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多少,所有索引数据都是内存存储的(Redis的索引数据就是keys)  
# 也就是说当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0  
# vm-max-memory 0  
  
# Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的。  
# 建议如果存储很多小对象,page大小最后设置为32或64bytes;如果存储很大的对象,则可以使用更大的page,如果不确定,就使用默认值  
# vm-page-size 32  
  
# 设置swap文件中的page数量由于页表(一种表示页面空闲或使用的bitmap)是存放在内存中的,在磁盘上每8个pages将消耗1byte的内存  
# swap空间总容量为 vm-page-size * vm-pages  
 
# 指定是否激活重置哈希,默认为开启  
activerehashing yes  
################################## INCLUDES ###################################  
# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件  
# include /path/to/local.conf  
# include /path/to/other.conf

编写 docker-compose.yml

yml 复制代码
version: '3.2'

services:
  redis:
    image: redis:6.2.8-alpine # redis 镜像
    container_name: redis # 容器名称
    restart: always # 容器重启策略
    ports:
      - "16379:6379" # 主机端口和容器端口
    environment:
      TZ: "Asia/Shanghai" # 设置成中国上海时间
    volumes:
      # 映射配置文件和数据目录
      - ./conf/redis.conf:/etc/redis/redis.conf
      - ./data:/data
      - ./logs:/logs
    command: ["redis-server", "/etc/redis/redis.conf" ] # redis.conf 启动
    privileged: true # 是否享有特权
    networks:
      - redis-single

networks:
  redis-single:
    driver: bridge

安装 redis 镜像并启动容器

bash 复制代码
docker-compose up -d

docker-compose 常用命令

  1. docker-compose up :启动应用程序的所有服务。如果 docker-compose.yml 文件不存在,则会报错。

    bash 复制代码
    docker-compose up

    添加 -d 标志以在后台运行应用程序:

    bash 复制代码
    docker-compose up -d
  2. docker-compose down:停止并移除应用程序的所有服务以及关联的容器、网络和卷。

    bash 复制代码
    docker-compose down

    添加 -v 标志以同时移除关联的卷(数据卷):

    bash 复制代码
    docker-compose down -v
  3. docker-compose ps:列出正在运行的服务以及它们的状态。

    bash 复制代码
    docker-compose ps
  4. docker-compose logs:查看应用程序的日志输出。

    bash 复制代码
    docker-compose logs

    使用 -f 标志来跟踪实时日志输出:

    bash 复制代码
    docker-compose logs -f
  5. docker-compose exec:在正在运行的容器内执行命令。

    bash 复制代码
    docker-compose exec <service-name> <command>

    例如,在 web 服务容器内执行一个 Shell 命令:

    bash 复制代码
    docker-compose exec web sh
  6. docker-compose build:构建或重新构建服务的镜像。

    bash 复制代码
    docker-compose build
  7. docker-compose pull:拉取服务的镜像,但不启动容器。

    bash 复制代码
    docker-compose pull
  8. docker-compose restart:重启服务。

    bash 复制代码
    docker-compose restart <service-name>
  9. docker-compose pausedocker-compose unpause:暂停和恢复服务。

    bash 复制代码
    docker-compose pause <service-name>
    docker-compose unpause <service-name>

这些命令可以帮助你管理 Docker Compose 项目中的服务。你可以根据自己的需求组合这些命令来管理和操作你的容器化应用程序。

Mac 安装

在 macOS 上安装 Redis 非常简单,你可以使用 Homebrew 来完成这个任务。Homebrew 是 macOS 上的包管理器,可以帮助你轻松地安装各种软件包,包括 Redis。以下是在 macOS 上安装 Redis 的步骤:

  1. 安装 Homebrew(如果你还没有安装的话):

    打开终端应用(Terminal)并运行以下命令来安装 Homebrew:

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

    这个命令会下载并安装 Homebrew。

  2. 安装 Redis

    安装 Redis 非常简单。在终端中运行以下命令:

    bash 复制代码
    brew install redis

    这会告诉 Homebrew 下载并安装 Redis。

  3. 启动 Redis 服务

    安装完成后,你可以使用以下命令来启动 Redis 服务:

    bash 复制代码
    brew services start redis

    这将在后台启动 Redis 服务器。

  4. 验证 Redis 是否运行

    你可以运行以下命令来验证 Redis 是否成功运行:

    bash 复制代码
    redis-cli ping

    如果一切正常,你将会收到一个回应,通常是 PONG

现在,Redis 已经成功安装并运行在你的 macOS 系统上。你可以使用 redis-cli 命令行工具来与 Redis 交互,执行各种 Redis 操作。

总结

总之,Redis 提供了在不同平台上安装的多种方式,你可以根据自己的需求和平台选择合适的安装方式。无论你使用哪种方式,都可以快速部署 Redis 并开始使用这个强大的内存数据库。

相关推荐
一只叫煤球的猫5 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9656 小时前
tcp/ip 中的多路复用
后端
bobz9656 小时前
tls ingress 简单记录
后端
皮皮林5517 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友7 小时前
什么是OpenSSL
后端·安全·程序员
bobz9658 小时前
mcp 直接操作浏览器
后端
前端小张同学10 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook10 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康11 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在11 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net