当涉及到高速缓存和数据存储时,Redis(Remote Dictionary Server)是一个强大而流行的选择。它是一个开源的内存数据存储系统,常被用作缓存、消息中间件以及数据存储解决方案。本篇博客将为你提供关于在不同平台上安装 Redis 的详细指南,帮助你快速开始使用这一高性能的数据存储工具。
前言
Redis 的多平台支持使其在不同操作系统上的安装变得十分便捷。无论你是在 Linux、Windows、Docker 还是 macOS 上使用 Redis,我们都为你准备了详细的安装步骤和指导。以下是本篇博客的主要内容:
Linux 平台安装指南
确保 Linux 能够连接外网
源码包方式
在线下载 Redis 源码包
wget http://download.redis.io/releases/redis-6.0.8.tar.gz
解压 Redis 源码包
tar xzf redis-6.0.8.tar.gz
进入解压后的文件夹后编译并执行安装
cd redis-6.0.8
sudo make && make install
包管理器安装
Ubuntu
在 Ubuntu 上,你可以使用以下命令安装 Redis:
sudo apt-get update
sudo apt-get install redis-server
CentOS
在 CentOS 上,可以使用 yum
安装:
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 会被设置成开机自启的状态
勾选将 redis 安装信息添加到环境变量,安装过程在对话框中输入最大内存数为 4096MB,表示最大 4GB。
一直 Next 下去等待安装完成即可
修改 Redis Windows 版本配置文件
按照以下配置修改即可
#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 文件安装
下载 zip 文件到某个文件夹中
解压 redis.zip 并进入相关文件夹
redis-server.exe redis.windows.conf #指定配置文件启动
或者
redis-server.exe #用默认的配置启动
启动的临时 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
docker ps # 查看正在运行的容器
docker ps -a # 查看全部的容器,包括已经停止的
下载 Redis 镜像
docker pull redis # 下载最新版 redis 镜像
docker pull redis:6.0.8 # 下载 redis 6.0.8 镜像
基于 Redis 镜像启动容器
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 容器是否运行成功
docker ps | grep redis
Docker-compose 安装
编写 Redis 配置文件
# 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 命令在连接上指定数据库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
# 当master服务设置了密码保护时,slav服务连接master的密码
# 下文的“requirepass”配置项可以指定密码
# masterauth
# 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过auth 命令提供密码,默认关闭
#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
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 镜像并启动容器
docker-compose up -d
docker-compose 常用命令
docker-compose up:启动应用程序的所有服务。如果 docker-compose.yml
文件不存在,则会报错。
docker-compose up
添加 -d
标志以在后台运行应用程序:
docker-compose up -d
docker-compose down:停止并移除应用程序的所有服务以及关联的容器、网络和卷。
docker-compose down
添加 -v
标志以同时移除关联的卷(数据卷):
docker-compose down -v
docker-compose ps:列出正在运行的服务以及它们的状态。
docker-compose ps
docker-compose logs:查看应用程序的日志输出。
docker-compose logs
使用 -f
标志来跟踪实时日志输出:
docker-compose logs -f
docker-compose exec:在正在运行的容器内执行命令。
docker-compose exec
例如,在 web
服务容器内执行一个 Shell 命令:
docker-compose exec web sh
docker-compose build:构建或重新构建服务的镜像。
docker-compose build
docker-compose pull:拉取服务的镜像,但不启动容器。
docker-compose pull
docker-compose restart:重启服务。
docker-compose restart
docker-compose pause 和 docker-compose unpause:暂停和恢复服务。
docker-compose pause
docker-compose unpause
这些命令可以帮助你管理 Docker Compose 项目中的服务。你可以根据自己的需求组合这些命令来管理和操作你的容器化应用程序。
Mac 安装
在 macOS 上安装 Redis 非常简单,你可以使用 Homebrew 来完成这个任务。Homebrew 是 macOS 上的包管理器,可以帮助你轻松地安装各种软件包,包括 Redis。以下是在 macOS 上安装 Redis 的步骤:
安装 Homebrew(如果你还没有安装的话):
打开终端应用(Terminal)并运行以下命令来安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
这个命令会下载并安装 Homebrew。
安装 Redis:
安装 Redis 非常简单。在终端中运行以下命令:
brew install redis
这会告诉 Homebrew 下载并安装 Redis。
启动 Redis 服务:
安装完成后,你可以使用以下命令来启动 Redis 服务:
brew services start redis
这将在后台启动 Redis 服务器。
验证 Redis 是否运行:
你可以运行以下命令来验证 Redis 是否成功运行:
redis-cli ping
如果一切正常,你将会收到一个回应,通常是 PONG
。
现在,Redis 已经成功安装并运行在你的 macOS 系统上。你可以使用 redis-cli
命令行工具来与 Redis 交互,执行各种 Redis 操作。
总结
总之,Redis 提供了在不同平台上安装的多种方式,你可以根据自己的需求和平台选择合适的安装方式。无论你使用哪种方式,都可以快速部署 Redis 并开始使用这个强大的内存数据库。