Redis 安装配置 #
Redis 安装,配置认证密码,配置 service 服务。
安装 #
#下载
wget http://download.redis.io/releases/redis-x.x.x.tar.gz
#解压
tar -xzvf redis-x.x.x.tar.gz
# 编译安装
cd redis-x.x.x
make
make install
make install
会在 /usr/local/bin
目录下生成以下文件:
- redis-server:Redis 服务器端启动程序
- redis-cli:Redis 客户端操作工具。也可以用 telnet 根据其纯文本协议来操作
- redis-benchmark:Redis 性能测试工具
- redis-check-aof:数据修复工具
- redis-check-dump:检查导出工具
如果出现以下错误:
make[1]: Entering directory `/root/redis/src'
You need tcl 8.5 or newer in order to run the Redis test
……
这是因为没有安装 tcl 导致,yum 安装即可:
yum install tcl
配置 Redis
复制配置文件到 /etc/
目录:
cp redis.conf /etc/
vim /etc/redis.conf
#找到下面的内容
################################# GENERAL #####################################
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
# NOT SUPPORTED ON WINDOWS daemonize no
#修改daemonize配置项为yes,使Redis进程在后台运行
daemonize yes
启动 Redis
cd /usr/local/bin
./redis-server /etc/redis.conf
#检查是否启动成功:
ps -ef | grep redis
一些常用的 Redis 启动参数:
- daemonize:是否以后台 daemon 方式运行
- pidfile:pid 文件位置
- port:监听的端口号
- timeout:请求超时时间
- loglevel:log 信息级别
- logfile:log 文件位置
- databases:开启数据库的数量,默认 16 个。
save * *
:保存快照的频率,第一个*
表示多长时间,第三个*
表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存 快照。可设置多个条件。- rdbcompression:是否使用压缩
- dbfilename:数据快照文件名(只是文件名)
- dir:数据快照的保存目录(仅目录)
- appendonly:是否开启 appendonlylog,开启的话每次写操作会记一条 log,这会提高数据抗风险能力,但影响效率。
- appendfsync:appendonlylog 如何同步到磁盘。三个选项,分别是每次写都强制调用
fsync
、每秒启用一次fsync
、不调用fsync
等 待系统自己同步
配置密码认证登录 #
Redis 默认配置是不需要密码认证,需要手动配置启用 Redis 的认证密码,增加 Redis 的安全性。
修改配置 #
linux 下 Redis 的默认配置文件默认在 /etc/redis.conf
。windows 下则是安装目录下的 redis.windows.conf
文件。
打开配置文件,找到下面的内容:
################################## SECURITY ###################################
# Require clients to issue AUTH <PASSWORD> before processing any other
# commands. This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
#requirepass foobared
去掉前面的注释,并修改为你的认证密码:
requirepass {your password}
修改后重启 Redis:
# 如果已经配置为 service 服务
systemctl restart redis
# 或者
/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /etc/redis.conf
登录验证 #
重启后登录时需要使用 -a
参数输入密码,否则登录后没有任何操作权限。如下:
./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set testkey
(error) NOAUTH Authentication required.
使用密码认证登录:
./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> set testkey hello
OK
或者在连接后进行验证:
./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth yourpassword
OK
127.0.0.1:6379> set testkey hello
OK
客户端配置密码 #
127.0.0.1:6379> config set requirepass yourpassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "yourpassword"
注意:使用客户端配置密码,重启 Redis 后仍然会使用
redis.conf
配置文件中的密码。
在集群中配置认证密码 #
如果 Redis 使用了集群。除了在 master
中配置密码外,slave
中也需要配置。在 slave
的配置文件中找到如下行,去掉注释并修改
为与 master
相同的密码:
# masterauth your-master-password
Redis 配置到系统服务(systemd) #
创建 redis.service 文件 #
进入 /usr/lib/systemd/system
目录,创建 redis.service
文件:
[Unit]
# 描述
Description=Redis
# 启动时机,开机启动最好在网络服务启动后即启动
After=syslog.target network.target remote-fs.target nss-lookup.target
# 表示服务信息
[Service]
Type=forking
# 注意:需要和 redis.conf 配置文件中的信息一致
PIDFile=/var/run/redis.pid
# 启动服务的命令
# redis-server 安装的路径和 redis.conf 配置文件的路径
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
# 停止服务的命令
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
# 安装相关信息
[Install]
# 启动方式
# multi-user.target 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
WantedBy=multi-user.target
Type=forking
,forking 表示服务管理器是系统 init 的子进程,用于管理需要后台运行的服务。
修改 /etc/redis.conf
:
daemonize yes
supervised systemd
# 使配置生效
systemctl daemon-reload
# 设置开机启动
systemctl enable redis.service
# 启动
systemctl start redis.service
# 查看状态
systemctl status redis.service
# 重启
systemctl restart redis.service
# 停止
systemctl stop redis.service
# 关闭开机启动
systemctl disable redis.service