zoukankan      html  css  js  c++  java
  • 02. Install redis on Linux

    shell>wget http://download.redis.io/releases/redis-3.2.6.tar.gz  #  这里版本读者应该已官方最新stable版本为准
    • Notice:我使用的安装目录是/ghca/redis ; 使用的版本是3.2.6; 下文提到的有关目录和版本,请读者已自己实际目录和版本替换。
    • 解压编译安装:
    shell>tar zxf redis-3.2.6.tar.gz
    shell>cd redis-3.2.6
    shell>make
    这是二进制程序已经编译到了src目录下,启动redis-server可以直接就执行其二进制文件,也可以对启进行make install 安装,将可执行程序移到指定安装目录下
    shell>make install PREFIX=/ghca/redis
    这一步将redis相关二进制可执行程序安装到/ghca/redis
    shell>cd /ghca/redis
    shell>mkdir log etc #创建日志和配置目录
    shell>mkdir data    #创建rdb和dump文件存放目录
    • 系统级配置修改 (修改配置这一步,可以到启动redis-server后,按照日志报警提示对应修改)
    shell>sysctl vm.overcommit_memory=1
        • 2)查看cat /sys/kernel/mm/transparent_hugepage/enabled,如果不是[never] 那么执行,如打印“[always] madvise never“则执行:
    shell>echo never >/sys/kernel/mm/transparent_hugepage/enabled
    shell>cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
    还要将echo 命令加入到 /etc/rc.local 为了在重启设置
    shell>vi /etc/rc.local
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
        • 3)tcp backlog设置,默认配置是511,如果启动是日志有警告warn 则需要修改系统/proc/sys/net/core/somaxconn的值为511
    shell>echo 511 >/proc/sys/net/core/somaxconn
      • 操作系统最好还是设置swap
    • 创建配置文件,从源码中赋值配置模板,在配置模板基础上修改。具体配置内容参见《03.Redis-配置文件》
    将源码文件夹下的配置文件复制到安装目录下的配置文件目录
    shell>cd etc
    shell>cp <源码路径>/redis.conf /ghca/redis/etc/
    相关配置介绍说明(可以略过):
    1)然后根据需求修改相应配置,不过要redis在后台运行,general 模块的第一个directive: daemonize no 要修改为daemonize yes
    2)3.2.6版本多了安全模式配置,默认是开启安全模式,开启安全模式是一层保护redis的措施,如果:没有明确指定bind配置或者没有password配置,redis就会在安全模式下运行。redis只会接受连接来自IPV4 IPV6的loopback地址(127.0.0.1)和unix domain sockets 的连接。
    3)tcp-keepalived 顾名思义:redis是tcp协议,为了保证client与redis-server之间活起的,该配置会让redis-server一定周期向client发送一个acks,可配置tcp-keepalived为0 要求没那么严格的话。
    4)有关snapshot-镜像快照:save <seconds> <changes>  时间和次数 两个维度条件满足,那么就做一次snapshot。save的策略可以有多个,因为有时间这个维度的参与,时间到了满足个数的条件就执行。 这个时间起始计数应该是一次changed的开始吧??,不要快照就注释所有save。如果最后一次快照失败,那么redis会停止所有的对redis key的写操作。这样能够让adm知道出现了故障,否则就不会有人注意到灾难的发生。如果后台saving线程再次开始工作了,redis将自动允许写操作。
    5)复制replication:
    6)网络配置
    7)指定pid文件,创建指定日志文件,日志文件名最好跟上端口号
    创建启动脚本,通过service 管理;
    shell>cp <源码路径>/utils/redis_init_start  /tmp/  # 注意redis更高的版本redis_init_start 文件名改为了redis_init_script,高版本的操作这个文件即可
    shell>修改/tmp/redis_init_start 或者 /tmp/redis_init_script
    实例内容如下:
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
     
    ### BEGIN INIT INFO
    # Provides:     redis_6379
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Redis data structure server
    # Description:          Redis data structure server. See https://redis.io
    ### END INIT INFO
     
    REDISPORT=6379   # 端口号,和配置文件一致
    REDIS_HOME=/ghca/redis  # redis安装目录
    EXEC=$REDIS_HOME/bin/redis-server
    CLIEXEC=$REDIS_HOME/bin/redis-cli
     
    PIDFILE=/ghca/redis/redis.pid   # pid文件路径 和配置文件中设置的路径一致
    CONF="$REDIS_HOME/etc/redis.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
      
    将启动文件复制到/etc/init.d/目录下:如,sudo cp /tmp/redis_init_start /etc/init.d/redis_server  复制的service服务名可以自己定义,我这里定义为redis_server;后面就可以使用service 启停redis_server服务了。不要忘记,配置文件redis.conf我们还没修改,下一步就修改配置文件了:
    设置完启动脚本后,就要去设置配置文件内容了,配置文件内容参考《03. Redis-配置文件》
    • 最后,添加redis 安装目录bin 到PATH中,"export PATH=/ghca/redis/bin:$PATH"  到~/.bashrc文件最后。添加完成source ~/.bashrc 加载。
     
  • 相关阅读:
    OSGI概念理解和入门
    东莞工厂探访
    软件开发经验之谈
    参加2019华为软件精英挑战赛心得
    论python中的函数参数的传递问题。
    pyhton中常用的基础模块
    程序编译
    hadoop源码学习(二)之ZooKeeper
    我用linux系统的采坑记
    macos解决Hadoop之Unable to load native-hadoop library
  • 原文地址:https://www.cnblogs.com/ZJiQi/p/10405906.html
Copyright © 2011-2022 走看看