Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。相比传统的关系型数据库,Redis最大的特点是将数据存储在内存中,这使得它的读写性能极高,通常能达到每秒数十万次操作。同时Redis也支持数据持久化,可以将内存中的数据保存到磁盘中,确保数据安全。
在实际应用中,Redis最常见的用途包括:
在开始安装Redis之前,我们需要根据不同的操作系统做一些准备工作:
对于Windows系统:
对于Linux系统:
提示:在生产环境中,强烈建议使用Linux系统运行Redis。Windows版本主要是为了开发和测试目的,性能和支持的功能都不如Linux版本完善。
Redis官方并不直接提供Windows版本,但微软维护了一个Windows移植版本。我们可以从GitHub获取最新的Windows版Redis:
C:\Redis解压后的目录包含多个可执行文件,其中最重要的两个是:
redis-server.exe:Redis服务器程序redis-cli.exe:Redis命令行客户端启动Redis服务的步骤:
redis-server.exe,会看到一个命令行窗口显示Redis启动信息redis-cli.exe启动客户端ping,如果返回PONG表示连接成功虽然Windows版Redis可以开箱即用,但了解一些基本配置很有必要:
redis.windows.conf文件,找到port 6379可以修改端口号# requirepass foobared,去掉注释并修改密码maxmemory参数设置上限注意:Windows版Redis默认不会安装为系统服务。如果需要长期运行,可以考虑使用第三方工具将其注册为Windows服务。
在Linux系统中,我们通常从源码编译安装Redis:
bash复制# 下载最新稳定版(以5.0.5为例)
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 解压源码包
tar -zxvf redis-5.0.5.tar.gz
# 进入解压目录
cd redis-5.0.5
Redis是用C语言编写的,需要gcc编译器:
bash复制# 检查gcc版本(需要4.8.5以上)
gcc -v
# 如果未安装gcc,执行以下命令安装
sudo yum install gcc-c++ # CentOS/RHEL
sudo apt-get install build-essential # Ubuntu/Debian
bash复制# 编译源码
make
# 可选:运行测试(耗时较长)
make test
# 安装到系统目录
sudo make install
默认情况下,Redis的可执行文件会被安装到/usr/local/bin目录,包括:
redis-server:Redis服务器redis-cli:命令行客户端redis-benchmark:性能测试工具redis-check-aof和redis-check-rdb:数据文件检查工具bash复制# 创建专用配置目录
sudo mkdir /etc/redis
# 复制默认配置文件
sudo cp redis.conf /etc/redis/
编辑/etc/redis/redis.conf文件,修改以下参数:
conf复制# 以守护进程方式运行
daemonize yes
# 设置日志文件路径
logfile "/var/log/redis.log"
# 设置数据目录
dir /var/lib/redis
# 设置最大内存(根据实际情况调整)
maxmemory 1gb
# 设置内存淘汰策略
maxmemory-policy allkeys-lru
# 如果需要远程访问,注释掉bind或改为0.0.0.0
# bind 127.0.0.1
# 设置密码(可选)
requirepass yourpassword
bash复制sudo mkdir /var/lib/redis
sudo chown -R redis:redis /var/lib/redis
bash复制redis-server /etc/redis/redis.conf
bash复制redis-cli
# 如果设置了密码,需要认证
auth yourpassword
bash复制# 通过客户端停止
redis-cli shutdown
# 或者直接kill进程
sudo pkill redis-server
为了方便管理,可以将Redis设置为系统服务:
/etc/systemd/system/redis.service:ini复制[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
bash复制sudo systemctl daemon-reload
sudo systemctl start redis
sudo systemctl enable redis
默认情况下,Redis只允许本地连接。要允许远程连接,需要修改以下配置:
bind指令或改为bind 0.0.0.0protected-mode设为noconf复制# bind 127.0.0.1
protected-mode no
requirepass yourpassword
Redis Desktop Manager是一款流行的图形化管理工具,连接步骤如下:
如果服务器启用了防火墙,需要开放Redis端口:
bash复制# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload
# Ubuntu/Debian
sudo ufw allow 6379/tcp
问题: 编译时出现jemalloc/jemalloc.h: No such file or directory错误
解决方案:
bash复制make distclean
make
问题: 远程客户端无法连接Redis
排查步骤:
netstat -tulnp | grep redisbind和protected-mode设置正确问题: Redis响应变慢
可能原因及解决:
maxmemory设置和内存使用情况appendfsync为everysecredis-cli --bigkeys查找大keyRedis提供两种持久化方式:RDB快照和AOF日志。如果遇到数据丢失问题:
dir配置项指定的目录是否正确dbfilename和appendfilename设置bind配置)maxmemory-policytimeout回收空闲连接INFO命令获取运行状态在实际部署中,我发现一个常见误区是开发者只关注Redis的安装而忽视后续的配置优化。特别是在内存设置方面,不合理的maxmemory和maxmemory-policy配置往往会导致性能问题。建议在生产环境中,根据应用特点和服务器资源,仔细调整这些参数。