zoukankan      html  css  js  c++  java
  • 业务迁移---redis

    以前也没怎么搞过redis 只知道他是一个nosql数据库很强大,这次迁移用到了~  正好熟练一下并记录过程,还挺繁琐。。

    记录一下在学习中的几个问题,总结加深一下印象,有可能会漏掉或者有误差的地方~~~

    #############################################

    Redis 是一个Nosql数据库
    redis.cn 中文官网
    redis 编译安装依赖gcc C程序与原的编译器,redis是c语言编写的。
    make 报错缺少gcc的话安装gcc, yum install gcc
    make 报错jemalloc/jemalloc.h:没有那个文件或者目录,运行make distclean 之后在make
    redis 5大数据类型 string字符串 HASH 哈希 LIST 列表 SET 集合 ZSET有序集合

    ##############################################

    Redis持久化是什么?

    是RDB和AOF的两种备份方式

    Redis备份方法?区别在哪? 

    两种备份方法:
    1.rdb文件备份
    2.aof文件备份
    区别:
    RDB文件是系统默认开启的,
    优点:以文件的形式存储到硬盘,根据写入的次数和和时间策略来触发备份,适合大文件的备份迁移较快的恢复大量的数据;
    缺点:紧急断电或故障时有丢少量数据风险,完整性要求较高的文件备份不建议使用rdb方式。
    Aof文件备份默认不开启,
    优点:时时备份,AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
    缺点:因为是时时备份,会对磁盘时时写入,影响磁盘IO性能。

    几种工作模式?

    1.单机
    2.分片
    3.集群
    
    主从复制的几种模式:
    4中模式
    1.一主二从  
    2.薪火相连
    3.反客为主
    4.哨兵模式  (目前比较流行)

    迁移流程:

    拷贝备份文件到新的redis服务器上

     我用的rdb备份模式,scp dump.rdb到新的redis的服务器

    安装Redis服务

    yum install redis php-pecl-redis.x86_64 php-phpiredis.x86_64 php-nrk-Predis.noarch   #yum 安装

    配置redis.conf

    里面配置太多了,我只更改了几个地方:

    1.Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
      daemonize no  #如果不想起服务的时候卡死在那最好先改为yes。。
    
    2.rdb备份是系统默认开启的,但是他的备份文件的路径需要改一下找个大点的磁盘存储。。
    dir /test/redis
    
    3.访问权限,默认是127.0.0.1本机访问,我这边给他放开所有主机的权限,因为连的web有点多。。bind 0.0.0.0
    ################################## NETWORK #####################################
    
    # By default, if no "bind" configuration directive is specified, Redis listens
    # for connections from all the network interfaces available on the server.
    # It is possible to listen to just one or multiple selected interfaces using
    # the "bind" configuration directive, followed by one or more IP addresses.
    #
    # Examples:
    #
    # bind 192.168.1.100 10.0.0.1
    # bind 127.0.0.1 ::1
    bind 0.0.0.0
    4.生产模式下需要配置redis密码,否则很危险,默认不配置
    requirepass "myPasswOrd"

    启动Redis

    redis-server /etc/redis.conf 
    

    ############

    还有一个参数我目前没设置,因为可能性能要求还没那么高,但是非常重要,记录一下!

    maxmemory 值的设置限制redis使用的内存大小一般都设置总内存的4/3,

    maxmemory在64位操作系统中默认不限制,也就是=0,在32位系统默认是3G,这个根据自己情况更改吧。。

    提这个的主要目的就是一旦开启了maxmemory的大小限制,就一定要给一个缓存策略,帮他来消化限制之外的set怎么处理,是抛弃?是腾空间?怎么腾?所以就有了这几个选项

    noeviction就不建议选了,allkeys-lru可以在迷茫的时候选择试试~   就理解这么多。。。

    noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错
    allkeys-lru:在主键空间中,优先移除最近未使用的key。
    volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
    allkeys-random:在主键空间中,随机移除某个key。
    volatile-random:在设置了过期时间的键空间中,随机移除某个key。
    volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。

    ############

    __NOLAYOUT__}

    :(

    Class 'Redis' not found

    错误位置

    FILE: /letv/www/hotel/Hoteltest/Think

      

    错误摘记:

    启动后页面打开报错,因为我使用的时SLB负载均衡,登陆网站时输入验证码时好时坏,因为时轮询的那肯定有一台有问题。

    【排查思路】

    1.tail -f /var/log/nginx/access.log  看一下Nginx日志,抓到了原来其中一台报错500.。。。

    2.为什么会报错500呢,我测试了一下redis的连接性,没有问题应该不是权限问题。。

    3.页面F12查看错误详情"Class 'Redis' not found",浏览器很友好的告诉我错误提示了。

    4.通过博客查看结果时: 有的说没安装redis扩展导致的,还有一种可能就是你php和web 没有加载正确。。

    【解决】

    1.先将报错机器的php全部卸载。。

    2.看一下正常机器安装的扩展包

    [root@iz8vbilqy0q9v8tds55bqyz Hoteltest]# yum list installed|grep php|awk -F ' ' '{print $1}'|xargs
    php-channel-nrk.noarch php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-gd.x86_64 php-mysql.x86_64 php-nrk-Predis.noarch 
    php-pdo.x86_64 php-pear.noarch php-pecl-igbinary.x86_64 php-pecl-redis.x86_64 php-phpiredis.x86_64 php-process.x86_64 php-xml.x86_64
     
    yum install php-channel-nrk.noarch php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-gd.x86_64 php-mysql.x86_64 
    php-nrk-Predis.noarch php-pdo.x86_64 php-pear.noarch php-pecl-igbinary.x86_64 php-pecl-redis.x86_64 php-phpiredis.x86_64 php-process.x86_64 php-xml.x86_64

      

    安装重启,解决。。

    错误摘记:

    在一次迁移中,更换了redis.conf 中的密码,导致了主战登录页面验证码无法通过验证,一直报错~~ 将密码改回即解决,目前还不知道什么原因!!!

     

    好记性不如烂笔头-_-
  • 相关阅读:
    linux上java和golang环境变量的设置
    MySQL踩坑及MySQL解压版安装
    Mysql踩坑 自动更新的时间只允许有一个
    从零开始学习PYTHON3讲义(十五)让画面动起来
    从零开始学习PYTHON3讲义(十四)写一个mp3播放器
    从零开始学习PYTHON3讲义(十三)记事本的升级版:网络记事本
    从零开始学习PYTHON3讲义(十二)画一颗心送给你
    从零开始学习PYTHON3讲义(十一)计算器升级啦
    从零开始学习PYTHON3讲义(十)自己做一个“电子记事本”
    从零开始学习PYTHON3讲义(九)字典类型和插入排序
  • 原文地址:https://www.cnblogs.com/liuquan/p/7263386.html
Copyright © 2011-2022 走看看