Redis问题整理
2019-03-13 本文已影响0人
凯文不上班
1.大量key遍历:keys影响性能、scan迭代执行
2.持久化方法:rdb和aof,rdb原理:fork一个子进程,进行持久化操作,生成快照文件;aof原理:每次写命令写到aof文件中,根据配置的同步策略刷新到硬盘中。
3.list实现方法:默认使用ziplist,当新加入字符串长度超过64,ziplist节点个数超过512转化为用linkedlist
4.redis做异步队列怎么实现:采用list,rpush加入消息,lpop消费消息,在没有消息可以消费的情况下blpop可以一直阻塞住。能不能生产一次消费多次呢?使用pub/sub主题订阅者模式,可以实现1:N的消息队列。
5.如何实现延时队列?使用sortedset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒之前的数据轮询进行处理。
6.Pipeline有什么好处?将多次IO往返的时间缩减为一次
7.Redis的同步机制了解么?Redis可以使用主从同步,从从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。
8.Redis sds动态字符串优缺点
优点:获取长度时间为O(1);杜绝缓冲区溢出;减少内存分配;二进制安全。缺点:sdscat api返回值不知道内部是否重新分配空间;如果sds会在程序的不同位置共享,则在修改字符串时候必须修改所有的应用。