安装Redis完整过程

安装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)更改EXECCLIEXEC参数,设置对应的值,如上所示即和我们前面安装的一致。

   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.confrequirepass 指定一个验证密码。

 以上操作完成后,即可注册服务:

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.指定存储至本地数据库时是否压缩数据,默认为yesRedis采用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。可以配置自动做快照持久 化的方式。我们可以配置redisn秒内如果超过mkey被修改就自动做快照,下面是默认的快照保存配置

save 900 1  #900秒内如果超过1key被修改,则发起快照保存
save 300 10 #300秒内容如超过10key被修改,则发起快照保存
save 60 10000

 

• loglevel notice

指定输出消息的级别

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

• logfile /var/log/redis.log

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

logfile /var/log/redis.log




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章