zoukankan      html  css  js  c++  java
  • linux下安装redis3.2

    1.下载

    选取当前最新版本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:日志文件地址
  • 相关阅读:
    set<char*>s
    sscanf()函数。
    C语言函数sscanf()的用法 (转载
    zjut 1179 平均数
    C++数据间隔
    C++ 保留小数
    c++ 保留小数
    c语言 保留两位小数
    c++ 如何实现保留小数并 且 不进行四舍五入
    uva-657-搜索
  • 原文地址:https://www.cnblogs.com/wepe/p/7424534.html
Copyright © 2011-2022 走看看