大白话说Redis进阶
2021-09-28 20:59:59 31 举报
redis进阶,包括使用案例和经典问题,可以翻翻我的基础版(大白话说redis)
作者其他创作
大纲/内容
破玩意儿
有哪些特性
高性能,作为缓存组件读写速度都很快
支持各种复杂的数据类型(string[bitmap,geo...],list,set,zset,hash)
支持事务(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都挂,那就查数据库吧(为啥觉得redis会挂mysql不会挂呢?)
如何进行持久化的
aof
默认不开启,需要改配置
所有的命令都会写aof缓冲区,一般一秒刷一次盘
为了避免aof文件过大,会有一个重写机制,可以配置触发条件
rdb
就是所有的内存缓存数据二进制文件,经过redis压缩过的,会比数据本身都小
可以自己配置啥时候进行rdb备份(save)
如果同时开启了aof和rdb,启动会加载aof,但是rdb的加载更快
主从同步的话,如果是全量同步,master会整一个rdb发送给slave
aof+rdb
v4.0后新增的持久化机制,需要开启aof,且开启aof+rdb(都是配置)
重写aof的时候先整一个rdb,然后和子进程搞rdb期间的命令以aof的方式搞到一起
几个被问烂的问题
缓存击穿
集中失效(同时过期)强调“击穿点(过期时间)”
缓存穿透
db&redis 均没有,强调钻空子绕过你
缓存雪崩
你告诉我这玩意儿和缓存击穿有啥区别?
大key
顾名思义就是key存储的缓存数据很大,比如一个list有几十万的size
优雅删除大key
缓存数据一致性
先更新数据库然后失效缓存
性能调优
查看慢日志 slowlog get {n}
查看bigkey
集中过期
有可能是bgsave或者aofrewrite
使用场景
string
普通缓存
set k a
get k
delete k
expire k 5
计数器
incr number
incrby number 100
session
一般框架自带,不用你管
分布式锁
setnx k lock
list
队列
lpush + lpop
朋友圈时间线
lpush
hash
普通缓存
set
用户共同标签或者好友
smembers s1
sdiff s1 s2
sinter s1 s2
sunion s1 s2
zset
排行榜
zrange z1 0 -1
bitmap
签到打卡
setbit sign 20210901 1
setbit sign 20210902 0
getbit sign 20210902
bitcount sign
0 条评论
下一页
为你推荐
查看更多