Loading

centos7安装redis6及持久化的选择

一. 安装redis6.0.4,并配置

1. 下载 redis6.0.4 版本并解压

  [root@test ~]#  wget http://download.redis.io/releases/redis-6.0.4.tar.gz

  [root@test ~]#  tar -zxvf redis-6.0.4.tar.gz

  [root@test ~]#  cd redis-6.0.4

2. 安装gcc,并保证gcc版本>5.3

  [root@test redis-6.0.4]#  yum –y install gcc      yum安装gcc默认版本为4.8.5< 5.3

  [root@test redis-6.0.4]#  gcc –v                    查看gcc版本

   

 

 

3. 升级gcc到9+

  [root@test redis-6.0.4]# yum -y install centos-release-scl

  [root@test redis-6.0.4]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

  [root@test redis-6.0.4]# scl enable devtoolset-9 bash   // 临时有效,退出 shell 或重启会恢复原 gcc 版本

  [root@test redis-6.0.4]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile  //长期有效

4. 查看gcc版本

  [root@test redis-6.0.4]#  gcc –v

   

 

 

5. 编译安装redis并指定安装目录

  [root@test redis-6.0.4]# make && make install PREFIX=/usr/local/redis6

  [root@test redis-6.0.4]# cp redis.conf /usr/local/redis6    拷贝一份配置文件

6. 修改redis配置文件

  [root@test redis-6.0.4]# vim /usr/local/redis6/redis.conf

         bind 0.0.0.0   访问控制

    port 6379  指定端口

   daemonize yes  将no改为yes允许redis后台启动

   pidfile “/usr/local/redis6/redis_6379.pid” 指定pid存放目录

   logfile "/usr/local/redis6/redis.log"    指定日志存放目录

   dir "/usr/local/redis6/data"   指定数据存放目录

   requirepass 123456    为redis设置密码

   maxmemory  4294967296   redis设置最大存储空间为4GB单位为字节(byte),根据服务器设置

   maxmemory-policy allkeys-lru  设置redis回收机制,默认不删除,当内存不足需写入新数据时,移除使用最少的key

7. 启动并连接redis

  [root@test redis-6.0.4]# mkdir /usr/local/redis6/data

    [root@test redis-6.0.4]# cd /usr/local/redis6/bin

      [root@test bin]# ./redis-server ../redis.conf

     [root@test bin]# ./redis-cli -a 123456

        

 

二. 解决redis启动的三个警告

第一个警告:The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
第二个警告: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.
第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue 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 thesetting after a reboot. Redis must be restarted after THP is disabled.

解决方案
考虑到redis一般都是部署在服务器上作为服务存在的。所以,本文的解决方案都是持久性配置,不是临时配置。

第一个警告
将net.core.somaxconn = 1024添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

第二个警告
将vm.overcommit_memory = 1添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

第三个警告
将echo never > /sys/kernel/mm/transparent_hugepage/enabled添加到/etc/rc.local中,然后执行source /etc/rc.local生效配置。

 

三. 关于redis持久化的选择

     RDB优点:

高性能的持久化实现:创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作

比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合

 

  RDB的缺点:

意外宕机时,最后一次持久化的数据会丢失

 

 AOF优点:

可以灵活的设置同步持久化appendfsync always或异步持久化appendfsync verysec

宕机时,仅可能丢失1秒的数据

 

 AOF的缺点:

AOF文件的体积通常会大于RDB文件的体积

执行fsync策略时的速度可能会比RDB慢

 

posted @ 2020-12-30 13:39  bathing  阅读(215)  评论(0编辑  收藏  举报
Live2D