zoukankan      html  css  js  c++  java
  • Redis的部署

    笔者Q:972581034 交流群:605799367 欢迎加群交流
    官方网站
    redis.io
    
    下载
    cd /usr/local/src
    wget http://download.redis.io/releases/redis-3.0.7.tar.gz
    

    安装redis

    tar xf redis-3.0.7.tar.gz
    cd redis-3.0.7/
    make PREFIX=/usr/local/redis-3.0.7 install
    

    复制启动文件到etc下

    cp redis_init_script /etc/init.d/redis
    

    修改启动文件默认路径

    [root@redis utils]# sed -i 's#EXEC=/usr/local/bin/redis-server#EXEC=/usr/local/redis/bin/redis-server#g' /etc/init.d/redis
    

    修改停止文件默认路径

    [root@redis utils]# sed -i 's#CLIEXEC=/usr/local/bin/redis-cli#CLIEXEC=/usr/local/redis/bin/redis-cli#g' /etc/init.d/redis
    

    添加关闭脚本密码和监听主机

    vim +30 /etc/init.d/redis
    #30行下添加
    30                 $CLIEXEC -h 10.0.0.20 -p $REDISPORT -a oldboy shutdown
    

    创建软连接,加执行权限

    [root@redis utils]# ln -s /usr/local/redis-3.0.7/ /usr/local/redis
    [root@redis utils]# cd
    [root@redis ~]# chmod +x /etc/init.d/redis
    

    复制配制文件

    [root@redis ~]# mkdir /etc/redis
    [root@redis ~]# cp /usr/local/src/redis-3.0.7/redis.conf /etc/redis/
    

    修改端口

    [root@redis ~]# cd /etc/redis/
    [root@redis redis]# cp redis.conf 6379.conf
    [root@redis redis]# ls
    6379.conf  redis.conf
    

    修改配置文件后台启动

    [root@redis redis]# sed -i 's#daemonize no#daemonize yes#g' /etc/redis/6379.conf
    

    修改pid文件,加上端口号区分。因为redis单线程不能使用多个CPU

    [root@redis redis]# sed -i 's#pidfile /var/run/redis.pid#pidfile /var/run/redis_6379.pid#g' /etc/redis/6379.conf
    

    tcp-backlog

    [root@redis redis]# grep "tcp-backlog" 6379.conf 
    tcp-backlog 511
    

    解释一下:

    • backlog其实是一个连接队列,以下是backlog队列大小公式。

    • backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列

    • 未完成三次握手队列:服务器处于listen状态时收到客户端syn 报文(connect)时放入未完成队列中。

    • 已经完成三次握手队列:三路握手的第二个状态即服务器syn+ ack响应client后,此时第三个状态ack报文到达前(客户端对服务器syn的ack)一直保留在未完成连接队列中,如果三路握手完成,该条目将从未完成连接队列搬到已完成连接队列尾部.

    • backlog参数设置既可以在linux内核参数设置(修改文件/etc/sysctl相关参数),也可以在socket系统调用listen函数时设置(第二个参数),这二者区别是,前者为全局性的,影响所有socket,后者为局部性的,影响当前socket。

    配置文件提示/proc/sys/net/core/somaxconn的值不能低于tcp-backlog的值,不然启动时会有警告提示

    [root@redis redis]# cat /proc/sys/net/core/somaxconn 
    128
    
    #这里设置为512
    [root@redis redis]# echo 512 > /proc/sys/net/core/somaxconn
    [root@redis redis]# cat /proc/sys/net/core/somaxconn
    512
    

    绑定监听端口主机

    [root@redis redis]# sed -i 's@# bind 127.0.0.1@bind 10.0.0.20@g' /etc/redis/6379.conf
    [root@redis redis]# grep bind 6379.conf 
    # interfaces using the "bind" configuration directive, followed by one or
    # bind 192.168.1.100 10.0.0.1
    bind 10.0.0.20
    

    修改默认的日志文件名为redis_6379.log

    [root@redis redis]# sed -i 's@logfile ""@logfile "/var/log/redis_6379.log"@g' /etc/redis/6379.conf
    [root@redis redis]# grep logfile /etc/redis/6379.conf 
    logfile "/var/log/redis_6379.log"
    

    默认的数据库大小为0-16个,有需求可以修改

    [root@redis redis]# grep databases 6379.conf 
    # Set the number of databases. The default database is DB 0, you can select
    # dbid is a number between 0 and 'databases'-1
    databases 16
    # Compress string objects using LZF when dump .rdb databases?
    

    配置持久化数据目录/var/lib/redis_6379

    随意定义路径可能会导致数据被误删,单实例建议也配置路径,若以后增加实例会比较麻烦
    [root@redis redis]# sed -i 's#dir ./#dir /var/lib/redis_6379#g' 6379.conf
    [root@redis redis]# grep 'dir /' 6379.conf 
    dir /var/lib/redis_6379
    [root@redis redis]# mkdir /var/lib/redis_6379 -p
    

    修改password,不设密码是很容易被入侵的。

    [root@redis redis]# sed -i 's@# requirepass foobared@requirepass oldboy@g' /etc/redis/6379.conf 
    [root@redis redis]# grep "requirepass" /etc/redis/6379.conf 
    # If the master is password protected (using the "requirepass" configuration
    requirepass oldboy
    

    启动服务

    [root@redis redis]# /etc/init.d/redis start
    Starting Redis server...
    

    查看日志检查服务

    [root@redis redis]# less /var/log/redis_6379.log 
    20557:M 10 Jun 03:52:51.625 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 20557
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    20557:M 10 Jun 03:52:51.626 # Server started, Redis version 3.0.7
    20557:M 10 Jun 03:52:51.626 # 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.
    20557:M 10 Jun 03:52:51.626 * The server is now ready to accept connections on port 6379
    

    警告信息

    20557:M 10 Jun 03:52:51.626 # 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.
    
    

    表示voercommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。

    • 0 表示内存将检查是否有足够的可用内存供用进程使用;如果有足够的可用内存,内存申请允许;
      否则,内存申请失败,并把错误返回给应用进程。

    • 1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

    • 2 表示内核允许分配超过所有物理内存和交换空间总和的内存

    登录redis

    [root@redis redis]# redis-cli -h 10.0.0.20 -p 6379
    Could not connect to Redis at 10.0.0.20:6379: Connection refused
    not connected> 
    
  • 相关阅读:
    常用 Git 命令清单
    radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5
    centos 6.4/redhat 6.4 安装gitlab
    微信小程序——navigator无法跳转
    微信小程序——修改data里面数组某一个值
    微信小程序——template的循环嵌套
    微信小程序——template的使用方法
    node学习笔记8——发布npm包
    淘宝镜像使用方法
    node学习笔记7——npm安装包
  • 原文地址:https://www.cnblogs.com/Csir/p/6974037.html
Copyright © 2011-2022 走看看