大白话说Redis进阶
2021-09-28 20:59:59 31 举报
redis进阶,包括使用案例和经典问题,可以翻翻我的基础版(大白话说redis)
作者其他创作
大纲/内容
高性能,作为缓存组件读写速度都很快
支持事务(multi...exec)
支持持久化(aof,rdb,aof+rdb[v4.0+])
高可用特性(主从复制,哨兵,集群)
订阅通知机制和消息队列,stream(v5.0+)
有哪些特性
缓存读写是纯内存操作,没有磁盘io的限制
单线程数据读写,避免了多线程切换和数据竞态引发的锁
非阻塞的io多路复用模型(reactor)
底层数据结构优化的好(比如sds,成功的将长度的复杂度降到O(1))
为啥辣么快
请睁大眼睛看对面
列举你知道的redis常用的场景
别胡扯,那就是各种上下文处理用多线程,数据的存取还是单线程
redis6为啥改用多线程
惰性删除
定期删除
redis咋设计键过期的
volatile_lru:设置过过期时间的key里面最少使用的
allkeys_lru:所有key里面最少使用的
volatile_ttl:快要过期的key
还有很多,不说了,我用的是allkeys_lru
内存不足的时候有啥淘汰机制
主从复制+哨兵 || 集群+主从
如果整个redis都挂,那就查数据库吧(为啥觉得redis会挂mysql不会挂呢?)
redis如何保证高可用
默认不开启,需要改配置
所有的命令都会写aof缓冲区,一般一秒刷一次盘
为了避免aof文件过大,会有一个重写机制,可以配置触发条件
aof
就是所有的内存缓存数据二进制文件,经过redis压缩过的,会比数据本身都小
可以自己配置啥时候进行rdb备份(save)
如果同时开启了aof和rdb,启动会加载aof,但是rdb的加载更快
主从同步的话,如果是全量同步,master会整一个rdb发送给slave
rdb
v4.0后新增的持久化机制,需要开启aof,且开启aof+rdb(都是配置)
重写aof的时候先整一个rdb,然后和子进程搞rdb期间的命令以aof的方式搞到一起
aof+rdb
如何进行持久化的
集中失效(同时过期)强调“击穿点(过期时间)”
缓存击穿
db&redis 均没有,强调钻空子绕过你
缓存穿透
你告诉我这玩意儿和缓存击穿有啥区别?
缓存雪崩
顾名思义就是key存储的缓存数据很大,比如一个list有几十万的size
优雅删除大key
大key
先更新数据库然后失效缓存
缓存数据一致性
查看慢日志 slowlog get {n}
查看bigkey
集中过期
有可能是bgsave或者aofrewrite
性能调优
几个被问烂的问题
破玩意儿
set k a
get k
delete k
expire k 5
普通缓存
incr number
incrby number 100
计数器
一般框架自带,不用你管
session
setnx k lock
分布式锁
string
lpush + lpop
队列
lpush
朋友圈时间线
list
hash
smembers s1
sdiff s1 s2
sinter s1 s2
sunion s1 s2
用户共同标签或者好友
{store} 可以将结果额外存储
set
zrange z1 0 -1
排行榜
zset
setbit sign 20210901 1
setbit sign 20210902 0
getbit sign 20210902
bitcount sign
签到打卡
bitmap
使用场景
Redis进阶
0 条评论
回复 删除
下一页