linux下安装redis3.2

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:日志文件地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值