1.下载

下载地址:http://www.redis.io/download

选取当前最新版本3.2.1下载,上传到linux上,进行解压缩:

[root@mongodb1 redis]# ls

redis-3.2.1  redis-3.2.1.tar.gz

2.编译安装

进入redis-3.2.1目录下,运行make进行安装编译:

[root@mongodb1 redis-3.2.1]# ls

00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils

make需要安装编译器,默认为gcc.

[root@mongodb1 redis-3.2.1]# make

cd src && make all

make[1]: Entering directory `/root/redis/redis-3.2.1/src'

    CC adlist.o

    CC quicklist.o

    CC ae.o

In file included from ae.c:53:

ae_epoll.c: In function 'aeApiAddEvent':

ae_epoll.c:75: warning: missing initializer

ae_epoll.c:75: warning: (near initialization for 'ee.data')

ae_epoll.c: In function 'aeApiDelEvent':

ae_epoll.c:92: warning: missing initializer

ae_epoll.c:92: warning: (near initialization for 'ee.data')

    CC anet.o

anet.c: In function 'anetSockName':

anet.c:640: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:638: note: initialized from here

anet.c:644: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:642: note: initialized from here

anet.c: In function 'anetPeerToString':

anet.c:584: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:582: note: initialized from here

anet.c:588: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:586: note: initialized from here

anet.c: In function 'anetTcpAccept':

anet.c:555: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:553: note: initialized from here

anet.c:559: warning: dereferencing pointer 's' does break strict-aliasing rules

anet.c:557: note: initialized from here

    CC dict.o

    CC server.o

    CC sds.o

    CC zmalloc.o

    CC lzf_c.o

    CC lzf_d.o

    CC pqsort.o

    CC zipmap.o

    CC sha1.o

    CC ziplist.o

    CC release.o

    CC networking.o

    CC util.o

    CC object.o

    CC db.o

    CC replication.o

    CC rdb.o

    CC t_string.o

    CC t_list.o

    CC t_set.o

    CC t_zset.o

    CC t_hash.o

    CC config.o

    CC aof.o

    CC pubsub.o

    CC multi.o

    CC debug.o

    CC sort.o

    CC intset.o

    CC syncio.o

    CC cluster.o

    CC crc16.o

    CC endianconv.o

    CC slowlog.o

    CC scripting.o

    CC bio.o

    CC rio.o

    CC rand.o

    CC memtest.o

    CC crc64.o

    CC bitops.o

    CC sentinel.o

    CC notify.o

    CC setproctitle.o

    CC blocked.o

    CC hyperloglog.o

    CC latency.o

    CC sparkline.o

    CC redis-check-rdb.o

    CC geo.o

    LINK redis-server

    INSTALL redis-sentinel

    CC redis-cli.o

    LINK redis-cli

    CC redis-benchmark.o

    LINK redis-benchmark

    INSTALL redis-check-rdb

    CC redis-check-aof.o

    LINK redis-check-aof

 

Hint: It's a good idea to run 'make test' ;)

 

make[1]: Leaving directory `/root/redis/redis-3.2.1/src'

make完成之后,进行install,默认安装路径为/usr/local/bin下,这里我们把他安装目录放到/usr/local/redis下,使用PREFIX指定目录:

[root@mongodb1 redis-3.2.1]# mkdir /usr/local/redis

[root@mongodb1 redis-3.2.1]# make PREFIX=/usr/local/redis install

cd src && make install

make[1]: Entering directory `/root/redis/redis-3.2.1/src'

 

Hint: It's a good idea to run 'make test' ;)

 

    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

make[1]: Leaving directory `/root/redis/redis-3.2.1/src'

将redis可执行目录添加到环境变量中,编辑~/.bash_profile添加redis环境变量:

[root@mongodb1 bin]# cat ~/.bash_profile

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=/usr/local/redis/bin:/usr/local/mongodb/bin:$PATH:$HOME/bin

3.创建redis服务

此时其实就可以启动redis服务了,例如:

    % ./redis-server --port 9999 --slaveof 127.0.0.1 6379

    % ./redis-server /etc/redis/6379.conf --loglevel debug

但是我们一般还是把redis做成服务来启动,进入到utils目录,然后运行install_server.sh,运行这个会询问你几个问题,包括

指定redis的端口号

指定redis的配置文件

指定redis的日志文件

指定redis的数据目录文件

指定redis的可执行目录文件.

[root@mongodb1 utils]# ./install_server.sh 

Welcome to the redis service installer

This script will help you easily set up a running redis server

 

Please select the redis port for this instance: [6379] 

Selecting default: 6379

Please select the redis config file name [/etc/redis/6379.conf] 

Selected default - /etc/redis/6379.conf

Please select the redis log file name [/var/log/redis_6379.log] /data/redis/log/redis_6378.log

Please select the data directory for this instance [/var/lib/redis/6379] /data/redis/6379

Please select the redis executable path [/usr/local/redis/bin/redis-server] 

Selected config:

Port           : 6379

Config file    : /etc/redis/6379.conf

Log file       : /data/redis/log/redis_6378.log

Data dir       : /data/redis/6379

Executable     : /usr/local/redis/bin/redis-server

Cli Executable : /usr/local/redis/bin/redis-cli

Is this ok? Then press ENTER to go on or Ctrl-C to abort.

Copied /tmp/6379.conf => /etc/init.d/redis_6379

Installing service...

Successfully added to chkconfig!

Successfully added to runlevels 345!

Starting Redis server...

Installation successful!

完成之后,redis的服务就添加完毕了,服务名为redis_6379:

[root@mongodb1 init.d]# ls -l re*

-rwxr-xr-x  1 root root 1714 Jul  1 11:13 redis_6379

-rwxr-xr-x. 1 root root 1822 Jan 16  2013 restorecond

启动和关闭redis服务:

[root@mongodb1 init.d]# service redis_6379 status

Redis is running (19280)

[root@mongodb1 init.d]# service redis_6379 stop

Stopping ...

Redis stopped

[root@mongodb1 init.d]# service redis_6379 start

Starting Redis server...

使用redis-cli连接redis:

[root@mongodb1 init.d]# redis-cli

127.0.0.1:6379> 

4.redis服务解析

其实做完以上几步,我们已经可以正常使用redis了,下面我们来解析一下redis的启动停止过程.我们解析/etc/init.d/redis_6379文件:

#!/bin/sh

#Configurations injected by install_server below....

 

EXEC=/usr/local/redis/bin/redis-server

CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_6379.pid

CONF="/etc/redis/6379.conf"

REDISPORT="6379"

###############

# SysV Init Information

# chkconfig: - 58 74

# description: redis_6379 is the redis daemon.

### BEGIN INIT INFO

# Provides: redis_6379

# Required-Start: $network $local_fs $remote_fs

# Required-Stop: $network $local_fs $remote_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Should-Start: $syslog $named

# Should-Stop: $syslog $named

# Short-Description: start and stop redis_6379

# Description: Redis daemon

### END INIT INFO

 

 

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

        ;;

    status)

        PID=$(cat $PIDFILE)

        if [ ! -x /proc/${PID} ]

        then

            echo 'Redis is not running'

        else

            echo "Redis is running ($PID)"

        fi

        ;;

    restart)

        $0 stop

        $0 start

        ;;

    *)

        echo "Please use start, stop, restart or status as first argument"

        ;;

esac

可以发现,其实启动redis的语法就是:

 /usr/local/redis/bin/redis-server /etc/redis/6379.conf

关闭redis的语法就是:

/usr/local/redis/bin/redis-server -p 6379 shutdown

检查redis是否运行,就是检查redis的pid文件下的进程是否存在.

查看redis的配置文件/etc/redis/6379.conf,里面有很多注释,去除注释:

[root@mongodb1 utils]# grep -E -v "^#" /etc/redis/6379.conf |sed '/^$/d'

bind 127.0.0.1

protected-mode yes

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile /data/redis/log/redis_6379.log

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /data/redis/6379

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

其中主要的参数:

bind:绑定的ip地址

port:监听端口号

pidfile:pid文件名

dir:数据文件目录

logfile:日志文件地址

======================================================================================

文件解压命令:tar -xzvf  redis-3.2.0.tar.gz

                          cd  redis-3.2.0

                          make  ## 编译

安装路径:/opt/rh  

安装命令:make PREFIX=/opt/rh/redis install

配置环境变量:PATH=/opt/rh/redis/bin:/usr/local/mongodb/bin:$PATH:$HOME/bin  ##环境变量尚未配置。

重新启动计算机:shutdown -r now

创建目录: /opt/rh/redis/bin

创建目录:/opt/rh/redis/etc

移动配置文件:mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /opt/rh/redis/bin

                           mv redis.conf /opt/rh/redis/etc  

启动服务:./redis-server   ##目前只是前台启动服务,后台服务未配置。

======================================================================================

普通用户登陆Linux的时候,一般情况下PATH环境变量不包含/sbin 目录

因此当需要执行/sbin路径下的命令(比如ifconfig)时需要给PATH添上这一个路径。初用Linux时的时候我是新建的shell终端中用如下命令 PATH=$PATH:/sbin

虽然这样也能使PATH包含/sbin路径了,但是,当再重启一个shell终端时PATH的值去并没有改变,当再次用到/sbin下的命令时,还得用上述方法添上/sbin

今天终于找到了彻底改变PATH的方法了.

Linux中含有两个重要的文件 /etc/profile和$HOME/.bash_profile 每当系统登陆时都要读取这两个文件,用来初始化系统所用到的变量,其中/etc/profile是超级用户所用,$HOME/.bash_profile是每个用户自己独立的,我们可以修改该文件来设置一些变量。

命令用法如下

$ cd (进入用户登陆目录)

$ls –al .bash_profile(.bash_profile为隐藏文件,因此要用ls –a命令查找)

$vi .bash_profile(用vi编辑.bash_profile)

在里面的PATH一行修改 添上需要的路径

保存退出

因为该文件是在每次登陆时才读取,因此需要重启才能生效