Linux 下安装 Redis 及配置
说明
- centos7
- redis 4.0.14
- 我们需要下载源码用
gcc
编译,然后才能安装配置
Centos7 查看、安装 gcc/c++ 环境
传送门
官网 https://redis.io/
官网Github https://github.com/antirez/redis/releases
下载解压
# 进入当前用户的下载目录
[jerryjin@localhost ~]$ cd /home/jerryjin/下载
# 下载 redis 源码包
[jerryjin@localhost 下载]$ wget https://github.com/antirez/redis/archive/4.0.14.tar.gz
# 把 redis 源码解压到 /usr/local
[jerryjin@localhost 下载]$ sudo tar zxvf 4.0.14.tar.gz -C /usr/local
# 跳转目录。(解压后 /usr/local/ 下会多出一个目录 redis-4.0.14)
[jerryjin@localhost 下载]$ cd /usr/local/redis-4.0.14
编译、安装
编译 (需要gcc
编译器,如果没有,请先安装)
[jerryjin@localhost redis-4.0.14]$ sudo make
编译出的可执行文件在 /usr/local/redis-4.0.14/src
目录下
[jerryjin@localhost redis-4.0.14]$ sudo make install
安装操作会将相关的可执行文件复制到/usr/local/bin
,安装好后 redis-server
程序就在这 (添加到此路径下,就可以随处运行了)
配置
/usr/local/redis-4.0.14/redis.conf
复制一份并改名为/etc/redis/6379.conf
# 创建目录
[jerryjin@localhost redis-4.0.14]$ usdo mkdir -p /etc/redis
# 复制配置文件过去
[jerryjin@localhost redis-4.0.14]$ sudo cp /usr/local/redis-4.0.14/redis.conf /etc/redis/6379.conf
# 修改配置文件
[jerryjin@localhost redis-4.0.14]$ sudo vim /etc/redis/6379.conf
# 1. 释:bind 127.0.0.1 才能远程访问
# 2. 关闭保护模式:protected-mode no
# 3. 启用守护进程 daemonize yes
# 4. 登录密码,先去掉注释,设置个密码:requirepass 密码部分 (可选)
此时就可以启动 redis 了:
# 运行
redis-server /etc/redis/6379.conf
# 查看一下
netstat -ntulp | grep 6379
# 或
netstat -ntulp | grep redis
# 看完了我们先关掉 redis。 {pid} 是上个命令中查到的
kill -9 {pid}
配置服务
1. 添加服务配置
vim /lib/systemd/system/redis_6379.service
[Unit]
Description=redis-server
Documentation=https://redis.io/
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
ExecReload=/usr/local/bin/redis-server -s reload
ExecStop=/usr/local/bin/redis-server -s stop
Restart=always
RestartSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2. 运行服务
.service
可省,直接写 redis_6379
# 启动服务
systemctl start redis_6379
# 查看服务详情
systemctl status redis_6379
3. 开机启动
# 激活服务自启动
systemctl enable redis_6379.service
# 停止服务自启动
systemctl disable redis_6379.service
测试redis
提示说命令行输入密码登录不安全,没关系,反正以后又不在这里
# 登录
[jerryjin@localhost redis]$ redis-cli -h 127.0.0.1 -p 6379
# 输入密码
127.0.0.1:6379> auth benben
OK
# 测试写入数据
127.0.0.1:6379> set name jerryjin
OK
# 测试读取数据
127.0.0.1:6379> get name
"jerryjin"
得到 "jerryjin"
说明测试成功
问题
编译报错
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
解决方案:用蛮力,详细的看说明 https://github.com/redis/redis/blob/6.0/README.md#allocator
make MALLOC=libc
关机等待 reids 很久
用 init.d 方式配置开机启动
redis
的启动模板在 ../redis-4.0.14/utils/redis_init_script
把它拷贝到 /etc/init.d/
目录下,命名为redis_6379
同时它也将作为我们的服务名称。之所以加上端口作后缀,是考虑到有可能以后会安装多个redis
# 复制启动模板到 /etc/init.d/
[jerryjin@localhost utils]$ sudo cp /usr/local/redis-4.0.14/utils/redis_init_script /etc/init.d/redis_6379
# 设置权限
[jerryjin@localhost utils]$ sudo chmod 755 /etc/init.d/redis
# 设置开机自启动
[jerryjin@localhost init.d]$ sudo chkconfig redis_6379 on
这种配置开机启动的方式,出现 “关机等待 reids 很久”的问题
原因是是redis关闭
时需要密码
,我们修改一下:
vim /etc/init.d/redis_6379
其中这句 $CLIEXEC -p $REDISPORT -a benben shutdown
的 -a benben
就是告诉它密码是 benben
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT -a benben shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac