1. 安装Redis
执行一下代码:
sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar xvzf redis-stable.tar.gz
sudo cd redis-stable
sudo make
如果执行make命令出现错误,在重新进行make命令之前,请先运行以下命令
make distclean
执行完成后,执行
make test
如果报如下错误:
cd src && make test
make[1]: Entering directory `/opt/app/redis-2.6.14/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/opt/app/redis-2.6.14/src'
make: *** [test] Error 2
说明需要安装tcl,执行以下命令
sudo yum install tcl
至此Redis安装完成。
2. 启动Redis
src/redis-server ./redis.conf
并查看相应的端口是否已经启动
netstat -tlnp
3. 设置开机启动
编写开机启动脚本:
vim /etc/init.d/redis
内容如下: #!/bin/sh #chkconfig: 2345 90 10 # description: Redis is a persistent key-value database
#redis服务器监听的端口
REDISPORT=6379
REDISPATH=/home/ec2-user/redis-stable
#服务端所处位置
EXEC=${REDISPATH}/src/redis-server
#客户端位置
CLIEXEC=${REDISPATH}/src/redis-cli
#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="${REDISPATH}/redis.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 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
保存退出,添加脚本可执行权限
chmod 755 /etc/init.d/redis
开启服务
/etc/init.d/redis start
关闭服务
/etc/init.d/redis stop
设置开机启动
chkconfig redis on
4. 常见问题
4.1 Redis重启后,数据丢失
需要修改配置文件,设置持久化文件存放位置
#修改生成默认日志文件位置
logfile "/home/ec2-user/redis-stable/logs/redis.log"
#配置持久化文件存放位置,目录需要写权限
dir /home/ec2-user/redis-stable/data
若目录不存在,请创建。
4.2 系统重启后,数据丢失
在Linux系统中,Redis本来是有数据的,但在Linux系统重启后,Redis中的数据全部丢失。经过几次测试都一样,只有在Linux系统重启才会丢失,Redis重启应该是没有问题的。 这个问题只在Linux系统才存在,在Windows系统是没有问题的。
在Linux系统设置一个参数(vm.overcommit_memory)即可解决。
编辑 sysctl.conf 配置文件
vim /etc/sysctl.conf
另起一行增加参数 vm.overcommit_memory 配置,如下
vm.overcommit_memory = 1
使配置文件生效
sysctl -p