您的位置:首页 > 数据库 > Redis

安装Redis完整过程

2016-11-21 17:28 302 查看

安装Redis

希望将Redis安装在此目录下:

/usr/local/redis

参考http://redis.io/download的安装说明,做调整:
$ mkdir /usr/local/redis
$ cd /usr/local/src
$ wget http://download.redis.io/releases/redis-2.6.14.tar.gz $ tar xzf redis-2.6.14.tar.gz
$ ln -s redis-2.6.14 redis #建立一个链接
$ cd redis
$ make PREFIX=/usr/local/redis install #安装到指定目录中

可能遇到的错误,解决如下:
>>提示1:
make[3]: gcc:命令未找到
>>解决
yum -y install gcc-c++
>>提示2:
在包含自 adlist.c:34 的文件中:
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
zmalloc.h:55:2: 错误:#error "Newer version of jemalloc required"
>> 解决
make的时候加上 MALLOC=libc 参数
make PREFIX=/data/apps/redis2.6.14 MALLOC=libc install

注意上面的最后一行,我们通过PREFIX指定了安装的目录。如果make失败,一般是你们系统中还未安装gcc,那么可以通过yum安装之:
yum install gcc

安装完成后,则执行make.

在安装redis成功后,你将可以在/usr/local/redis看到一个bin的目录,里面包括了以下文件:

redis-benchmark
redis-check-aof
redis-check-dump
redis-cli
redis-server

将Redis做成一个服务

1.复制脚本到/etc/rc.d/init.d目录

按以上步骤安装Redis时,其服务脚本位于:

/usr/local/src/redis/utils/redis_init_script

必须将其复制到/etc/rc.d/init.d的目录下:

cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis
以下将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。

如果这时,我们直接注册服务:
chkconfig --add redis

将报以下错误:
redis服务不支持chkconfig

为些,我们需要更改redis的脚本,请看下节说明。

2.更改redis的服务脚本

vim /etc/rc.d/init.d/redis


看到以下的文件内容:

#!/bin/bash
#chkconfig: 2345 80 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/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 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

1)解决无法注册的问题:

   原文件是没有以下第2行的内容的,

#chkconfig: 2345 80 90


这时如果注册将报错,要添加再注册就OK了。
 
   2)更改EXEC、CLIEXEC参数,设置对应的值,如上所示即和我们前面安装的一致。

   3)更改redis开启的命令,以后台运行的方式执行:

$EXEC $CONF &

注意后面的那个“&”,即是将服务转到后面运行的意思,否则启动服务时,Redis服务将
占据在前台,占用了主用户界面,造成其它的命令执行不了。

   4)将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf

mkdir /etc/redis
cp /usr/local/src/redis/redis.conf /etc/redis/6379.conf

这样redis服务脚本指定的CONF就存在了。默认情况下,Redis未启用认证,可以通过开启6379.conf的requirepass
指定一个验证密码。

 以上操作完成后,即可注册服务:
chkconfig --add redis

启动Redis服务

$ service redis start

将Redis的命令所在目录添加到系统参数PATH中

修改profile文件:
#vi /etc/profile
在最后行添加:
export PATH="$PATH:/usr/local/redis/bin"

然后马上应用这个文件:
./etc/profile

这样就可以直接调用redis-cli的命令了,如下所示:
$ redis-cli
redis 127.0.0.1:6379> auth superman
OK
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379>

  由于上面我开启了安全验证功能,密码为superman,因此需要auth后才能和服务器交互。

配置优化:

• 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

             daemonize no   --->   daemonize yes

• 2.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能,单位是毫秒

          timeout 3000

• 3.指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

         rdbcompression yes ---> rdbcompression no

• 4.设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of
clients reached错误信息

      #maxclients 10000 ---> maxclients 10000

• 5.指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

        #maxmemory <bytes> ---> maxmemory <根据服务器自己设定>

• 6.指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

         appendonly no ---> appendonly yes

• 7.指定本地数据库存放目录<可以选择容量适中,安全的磁盘>

         dir ./   ---> dir /data/redis/data/

• 8.数据备份<主从设置> &&
集群搭建

         slaveof <masterip> <masterport>

• Snapshotting

       快照是默认的持久化方式。这种方式将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以配置自动做快照持久
化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照,下面是默认的快照保存配置

save 900 1  #900秒内如果超过1个key被修改,则发起快照保存

save 300 10 #300秒内容如超过10个key被修改,则发起快照保存

save 60 10000

 

• loglevel notice

指定输出消息的级别

# debug (调试级别,详细信息,信息量大)
# verbose (详细信息,信息量较大)
# notice (通知,生产环境推荐)
# warning (错误信息警告信息)

• logfile /var/log/redis.log

日志输出文件,默认在前端运行的时候此key的默认值是stdout输出到终端,如果用守护进程运行此key的stdout的时候将日志输入到/dev/null,如果想
94e8
记录日志,就必须为其指定logfile位置

logfile /var/log/redis.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: