• redis知识点-----------持续更新中


    一、Redis(REmote DIctionary Server)是一个Key Value存储系统,是非常著名的NoSQL数据库之一 ,在实际项目中有广泛应用前景

    二、数据类型

    string是一个Map以key,value形式存储对应数据信息

    hash:是以Map<string,Map<string,string>> 类型,string为key,里面的Map的key为field,value是正常value

     list:类似于java的集合

    set:

    zet:有序的集合

    三、redis事物

    multi:开启事务,之后的所有操作会放到执行队列。

    exec:提交事务

    如果是redis语法错误:在exec提交事务时所有的操作都不会生效。如果是语法没错执行时错误,所有的redis命令正常执行

     

    四、redis的持久化

    RDB(默认开启)会根据持久化设置生成二进制文件,每次redis启动的时候都会加载dump.rdb文件中的数据到内存中,AOF(需要手动设置)会将接收到的对数据的修改命令记录到磁盘文本文件中(可修改),redis重启后,通过执行AOF文件中所有命令来恢复数据。

    注意:redis重启会先读取AOF文件,在读去RDB文件

    修改redis.config中配置文件

    RDB的持久化:这是触发条件,900秒内,1个key值被修改。(两者必须同时满足才能够)

     

    AOF的持久化:默认不开启

    1、需要设置appendonly为yes,下面的是存储的文件名,dir为指定文件存放目录

     

     

    2、appendfsync:配置向aof文件写命令数据的策略

    no:不主动进行同步操作,交友操作系统来做(每30秒一次),较快,但不安全

    always:每次写入都会执行同步,慢一些,但安全

    everysec:每秒执行一次同步,较平衡,速度和安全之间,这是默认选项

    3、auto-aof-rewrite-min-size:允许重写的最小AOF文件大小,默认64M,当aof文件大于64M是,会开始整理aof文件,去掉无用操作命令(当数据量大时,难免会存在重复的命令,此时其实只需要最终的一条修改命令即可。)

    RDB:存储的是数据快照文件,回复数据很方便,很快,

    1)、有丢失数据的肯能性,会丢失最后一次快照以后更改的数据。

    2)、由于经常操作磁盘,RDB会分出一个子进程,可能会影响redis暂停服务。

    AOF:对数据非常严格要求,则舒勇AOF进行数据恢复,最多只会丢失1秒内的数据

    五、主从复制

    避免单点故障,需要将复制多份部署在多台不同的服务器上。

    主(Master):负责修改操作,从(slave):负责读操作。

    至少要有一个主和从,从是主的一个备份,当主宕机后,从会接替主进行修改操作。

    redis-server是开启一个线程进行存储服务,可以多开几个模拟多个redis服务器

    复制三份redis.config配置文件,并修改不同config的配置文件

    info replication:查看当前redis服务器端的关系信息

    从服务器不能写入,写入的话会报readonly操作

    容灾策略:当主服务器宕机后。

    slaveof no one: 将当前redis服务器提升为master

    slaveof ip port:当前从服务器重新挂载到主服务器

    服务器修好后,重新启动之后:slaveof ip port:当前服务器挂载到新的主服务器

    六、哨兵模式

    redis官方提供的高可用方案,用来监控多个redis服务实例的运行情况,哨兵不能存在一个服务器上,且数量为奇数(后续依据心跳机制进行投票来判断是否宕机)

    主要任务:

    监控:Sentinel不断的检查主服务器和从服务器是否按照预期正常工作

    提醒:当被监控的redis出现问题,Sentinel会通知管理员或其他应用程序

    自动故障转移:监控的主redis不能正常工作,Sentinel会开始进行故障迁移操作。会模拟上面的容灾策略进行

     

    心跳机制:redis服务器和哨兵之间会进行反应交互,哨兵会主动 向redis发动请求,根据相应结果主观判断redis是否正常

    sentinel.conf是哨兵配置文件,默认监控的redis主服务器

    启动哨兵redis-sentinel 指定 sentinel.conf。

  • 相关阅读:
    nodejs 提示‘xxx’ 不是内部或外部命令解决方法
    nodejs安装express不是内部或外部命令
    菜鸟供应链升级实践
    数据治理框架解读分析
    Canal+Kafka实现MySQL与Redis数据同步
    一条 SQL 引发的事故,同事直接被开除!!
    我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
    从 Storm 迁移到 Flink,美团外卖实时数仓建设实践
    供应链管理学习心得
    解密京东智慧供应链
  • 原文地址:https://www.cnblogs.com/guanyuehao0107/p/13962524.html
Copyright © 2020-2023  润新知