一、redis命令
1、管道
yum install nc // 安装nc,用于连接redis
2、Pub/Sub(直播聊天室信息实现)
3、RedisBloom
地址:redis.io -》 modules
4、conf中内存管理
一般大小1-10个G 太大则迁移成本等较大
LFU :次数使用
LRU :最少使用(时间维度)
二、redis作为数据库/缓存的区别
1、缓存数据是不重要,不是全量数据,缓存应该随着访问变化。【热数据】redis里的数据怎么随着业务变化,只保留热数据。内存大小是有限的,这是瓶颈,需要考虑;
2、缓存:追求极速,数据可以丢;数据库:数据绝对不能丢,速度+持久性;【内存中的东西会掉电丢失】
缓存数据清除逻辑:
key的有效期:业务逻辑的推动【数据保留一天的有效期】 给key设置时长,读操作不影响时间过期;写操作会剔除时间有效期,因此开发过程中需要通过业务逻辑重新设定;
expire k1 50 //给k1设置50秒过期时间
业务运转:内存有限,随着访问的变化,要淘汰冷数据。
2、Redis如何清除过期keys
每10s做一次随机keys检测,过期key的百分比25%,高于25则会重复进行随机检测。
三、redis单机持久化
1、实现持久化的技术
存储层:a、快照/副本;b、日志;
2、linux中管道 |
a 衔接,前一个命令作为后一个命令的输入
1、RDB(redis镜像)
RDB具有是时点性,优点:类似java中的序列化,恢复速度相对比较快。
镜像复制触发方式:
- 人为触发(两种):save(前台阻塞;使用场景:关机维护前,进行全量备份);bgsave(后台异步阻塞,通过fork()触发创建子进程;使用场景:运行时)
- 配置文件中给
弊端
- 不支持拉链。只有一个dump.rdb文件
- 做全量备份时,窗口期间发生断电容易导致数据丢失。
出bgsave规则:实际使用的是sava标识;
2、AOF
基本概念
- redis的写操作记录到文件中。(丢失的数据少;redis中RDB和AOF可以同时开启;如果开启了AOF,只会用AOF恢复;4.0之后AOF包含RDB全量,日志是增量备份,相对较快)
弊端
- 随着时间的运行,日志文件体量无限变大 -> 导致恢复慢;
扩展:
日志的优点是可以保存更全的信息,如何实际一个方案让日志AOF足够小;
a) hdfs利用fsimage+edits.log结合;让日志只记录增量数据
b) redis4.0之前,利用重写策略,删除抵消的命令,合并重复的命令,最终还是一个纯指令的日志文件;
c) redis4.0之后,日志记录一定量的时候触发重写,会将老的数据RDB到aof文件中,后面增量备份新的指令数据
- redis是内存数据库,写操作会触发IO;
redis中默认配置文件aof关闭,appendfsync为everysec(有三个级别:always,everysec,no)
三种级别的调整的原理:redis写入操作会调用kenel(内核)中的文件符(fd8),实际会将写入操作先放进开辟的一个buffer(缓存4k大小)中,然后再写入(flush)磁盘中。always:每次指令操作写入;no:等buffer满了再写入;everysec:每秒写入;
- 范德萨
四、主从复制
- 1、击穿
- 2、雪崩
- 3、

1752

被折叠的 条评论
为什么被折叠?



