黑马程序员技术交流社区

标题: redis相关 [打印本页]

作者: wk020510    时间: 2019-6-6 15:02
标题: redis相关
过期时间:

1. volatile -lru:
   allkeys -lru:
                           lru:最近最少使用
                           volatile:设置了过期时间的key
                           allkeys:所有的key
2. volatile -random:
   allkeys -random:
                           random:随机移除
                           volatile:设置了过期时间的key
                           allkeys:所有的key'
3. volatile -ttl:移除规定时间内更早过期的那个key





redis的持久化策略

AOF+RDB

RDB:在指定的时间内将内存中的数据写入磁盘(Snapshot快照);恢复时将                dump.rdb文件读取到内存中

原理***:

        Redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件。     [适合大规模数据恢复,注意考虑内存2倍膨胀]

(整个过程中,主进程不进行任何IO操作,这就确保了极高的性能)

【如果进行大规模数据恢复,并且对数据恢复的完整性不是很敏感,那么RDB方式比AOF方式更高效;但是最后一次持久化后的数据可能丢失】

---



RDB的持久化策略分为主动和被动;

- 主动:save【全阻塞】     BGsave【异步操作】
- 被动:【默认】900s触发1次;300s触发10次;60s触发1万次

fork也有持久化策略:

- 主动:save【只管保存,全部阻塞】  BGSAVE【异步操作,可以通过lastSave命令获取最后一次成功执行快照的时间】         flush操作          shutDown操作
- 被动:   save""

---



AOF是什么

                以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可用写文件,Redis启动之初会读取文件重新构建数据(根据日志文件的内容将指令从前到后执行一次)



如果AOF和RDB同时存在;恢复策略走AOF   {./redis-check-aof                                                                                                                                                                 --fix appendonly.aof}

配置文件:

appendfsync同步策略

                always:同步持久化 每次发生数据变更会被立即记录到磁盘;性能较差但数据完整性比较好(通过io写入到磁盘)

                everysec:出厂默认推荐,异步操作,每秒记录【如果一秒内宕机,数据丢】(先存入内存,通过命令写入磁盘中)

---



主从配置

【一主二从的情况】

主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,

- 从机配置:salveof  主机IP  主机端口号
  查看当前主机状态  info replication  
- 当配置长主从模式时,从机只能读取【读写分离】
- 从机断开,回来之后全局更新(shutDown   redis-server   ./redis-cli)        脱离组织的主机   哨兵
  - 增加更新:每次更新的内容是添加的内容
  - 全局更新:将所有的内容进行添加
- 当主机死亡之后,从机会原地待命,不会翻身做主,主机回来还是主机



【薪火相传】

一个传一个  A-->B---->C

1. 好处:出去中心化
2. 弊端:可能出现数据的失真
                           中间断开,此时就不能交互数据

【slaveof    no    one】反客为主(手动)

- 当主机断开之后,想让从机上位(slaveof   no   one  -->从机会变成主机,但不会影响其他机器)



【哨兵模式】

1. 配从不配主
2. 从库备份:slaveof 主库 ip 主库端口
3. 修改的内容:pid 端口 日志 dump文件
4. 先设置值,再连从库---->从是否能拿到  全备份



【{哨兵(sentinel)}】

进行投票选取新主机

                                sentinel   monitor被监控数据库名称(自己起自己)127.0.0.1  6379  1

redis的事物

                        可以一次执行多个命令,本质是一组命令。一个事物中的所有





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2