• redis编译安装


    编译安装redis-5.0.4

     转载:https://www.cnblogs.com/qq931399960/p/10584877.html

    编译安装为redis官方推荐安装方式。

    本例中使用linux版本为:CentOS Linux release 7.0.1406 (Core),Basic Web Server

    一、安装依赖包

    yum -y install gcc
    yum -y install libc

    libc安装过程,出现Error:Nothing to do,但并没有影响到接下来的redis安装,通过whereis libc,发现libc已经存在。

    二、下载redis安装包

    1、通过https://redis.io/download/下载redis最新稳定版本

    2、使用wget获取redis-stable版本

    wget http://download.redis.io/redis-stable.tar.gz

    通过http://download.redis.io/redis-stable.tar.gz获取到的版本始终为当前的最新文档版本。

    以上两种方式获取到的版本是相同的。本例以下载redis-5.0.4.tar.gz为例

    3、将redis-5.0.4上传到linux上某位置,解压到/usr/local下

    tar -zxvf redis-5.0.4.tar.gz
    mv redis-5.0.4 /usr/local/redis

    4、进入到redis-5.0.4目录

    cd /usr/local/redis/

    5、安装

    make && make install

    当执行make install之后,在/usr/local/bin下将出现一些redis脚本

    /usr/local/bin为环境变量,其下的脚本可以直接使用,故make进行安装,make install为设置环境变量

    6、执行测试(可选)

    执行make test之前需要安装tcl

    yum -y install tcl
    make test

    make test出现如下异常

    vim tests/unit/memefficiency.tcl

    将150和100的值改大点,如1500,1000,重新执行make test

    7、拷贝配置文件

    cp redis.conf /etc/

    8、修改配置

    新建日志地址

    mkdir -p /usr/local/redis/logs
    touch  /usr/local/redis/logs/redis.log

    vim /etc/redis.config

    复制代码
    logfile "/usr/local/redis/logs/redis.log"
    daemonize yes     ## 若使用开机启动,生成pid,该项必须设置为诶yes,否则redis将不能够正常执行开机启动(systemctl start redis,执行后一直卡着,直到超时)
    #bind 127.0.0.1  ##注释掉,允许所有其他ip访问,真实使用最好坐下限制,只允许某些主机访问
    protected-mode no ## 允许其他机器上的客户端连接当前redis,配置文件设置该项,则开机启动处就可以去掉--protected no
    dir /usr/local/redis/ ## db保存路径,由于db持久化到磁盘,占用空间可能比较大,所以选择比较打的文件夹设置
    requirepass 12345 ##设置密码
    复制代码

    9、设置开机启动

    vim /usr/lib/systemd/system/redis.service

    添加如下内容

    复制代码
    [Unit]
    Description=Redis persistent key-value database
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStart=/usr/local/bin/redis-server /etc/redis.conf --protected-mode no
    ExecStop=/usr/local/bin/redis-cli shutdown
    #Restart=always
    Type=forking
    #User=redis
    #Group=redis
    RuntimeDirectory=redis
    RuntimeDirectoryMode=0755
    
    [Install]
    WantedBy=multi-user.target
    复制代码

    Restart取值及含义

    复制代码
    no(默认值):退出后不会重启
    on-success:只有正常退出时(退出状态码为0),才会重启
    on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
    on-abnormal:只有被信号终止和超时,才会重启
    on-abort:只有在收到没有捕捉到的信号终止时,才会重启
    on-watchdog:超时退出,才会重启
    always:不管是什么退出原因,总是重启
    复制代码

    Type字段取值及含义

    复制代码
    simple(默认值):ExecStart字段启动的进程为主进程
    forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
    oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
    dbus:类似于simple,但会等待 D-Bus 信号后启动
    notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
    idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
    复制代码

    使配置生效

    systemctl enable redis
    systemctl daemon-reload

    10、启动redis

    systemctl start redis

     11、启动之后检查redis启动日志

    vim /usr/local/redis/logs/redis.log

    如有必要,根据WARNING中提示信息修改系统配置

    83199:M 25 Mar 2019 09:23:29.873 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    83199:M 25 Mar 2019 09:23:29.873 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

     vim /etc/sysctl.conf

    添加

    vm.overcommit_memory=1
    net.core.somaxconn = 1024

    使配置生效

    sysctl -p

    进制内核中启用Transparent Huge Pages(THP)支持,防止Redis延迟和内存使用问题

    echo never > /sys/kernel/mm/transparent_hugepage/enabled

    将该命令写入/etc/rc.local中,使其重启后也生效

    重新启动redis,检查日志中是否还有异常

  • 相关阅读:
    2_C语言中的数据类型 (九)逻辑运算符与if语句、switch、条件运算符?、goto语句与标号
    2_C语言中的数据类型 (八)运算符
    Python_sklearn机器学习库学习笔记(七)the perceptron(感知器)
    C++ STL 学习笔记__(7)Set和multiset容器
    2_C语言中的数据类型 (七)printf与scanf
    郑捷《机器学习算法原理与编程实践》学习笔记(第五章 梯度寻优)5.1 最优化与计算复杂度
    机器学习笔记(一)机器学习与数学分析
    2_C语言中的数据类型 (七)类型限定
    郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(三)SVD
    [译]Javascript timing事件
  • 原文地址:https://www.cnblogs.com/wts-home/p/15305292.html
Copyright © 2020-2023  润新知