基础知识个人小记7 | 青训营

62 阅读2分钟
 1.数据分冷热
   热数据:经常被访问到的数据

 2.数据从内存横纵读写
   数据保存到硬盘上防止重启数据丢失
   增量数据保存到AOF文件:如果系统当机,重新启动后会读取aof文件,执行没有执行的命令,之后才会拉起redis服务   
 3.len指的的存的内容多长,alloc指整个sds多长
 4.隅哈希:对外扩容,保证redis正常使用
 6.redis中不光使用了跳表还是用了dict
 7.分布式锁
   并发场景,要求一次只能有一个协程执行。执行完成后,其它等待中的协程才能执行。
   可以使用redis的setnx实现,利用了两个特性
   Redis是单线程执行命令
   setnx只有未设置过才能执行成功
 8.消除大Key的方法
    集合类结构hash、list、setset
    (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