1.数据分冷热
热数据:经常被访问到的数据
2.数据从内存横纵读写
数据保存到硬盘上防止重启数据丢失
增量数据保存到AOF文件:如果系统当机,重新启动后会读取aof文件,执行没有执行的命令,之后才会拉起redis服务
3.len指的的存的内容多长,alloc指整个sds多长
4.隅哈希:对外扩容,保证redis正常使用
6.redis中不光使用了跳表还是用了dict
7.分布式锁
并发场景,要求一次只能有一个协程执行。执行完成后,其它等待中的协程才能执行。
可以使用redis的setnx实现,利用了两个特性
Redis是单线程执行命令
setnx只有未设置过才能执行成功
8.消除大Key的方法
集合类结构hash、list、set、set
(1)拆分:可以用hash取余、位掩码的方式决定放在哪个key中
(2)区分冷热:如榜单列表场景使用zset.只缓存前10页数据,后续数据走db
9.热Key的定义
用户访问一个Key的QPS特别高,导致Server实例出现CPU负载突增或者不均的情况。
热key没有明确的标准,QPS超过500就有可能被识别为热Key
10.容易导致redis慢查询的操作
(1)批量操作一次性传入过多的key/value,如mset/hmset/sadd/zadd等O(n)操作建议单批次不要超过100,超过100之后性能下降明显。
(2)zset大部分命令都是0(log(n/),当大小超过5k以上时,简单的zadd/zrem也可能导致慢查询
(3)操作的单个value过大,超过10KB。也即,避免使用大Key
(4)对大key的delete/expire操作也可能导致慢查询,Redis4.0之前不支持异步删除unlink,大key删除会阻塞Redis