摘要:
数据类型 常用的包括**String、List、Hash、Set、Sorted Set**,不常用的包含GEO、Bitmap、HyperLogLog;底层数据结构包括简单字符串,双向链表,数组,压缩数组,哈希表,跳表;数据类型跟数据结构的对应关系为下图所示; hash算法 一个哈希表就是一个数组,数 阅读全文
摘要:
缓存穿透 什么是缓存穿透? 客户端大量集中恶意访问一些不存在的数据,例如访问id=-1的数据,这样在缓存层就无法查询到该数据,直接击穿缓冲层,到达数据库端,导致数据库压力过大,最终停止服务。 解决方案 在代码层面做判断限制非法数据的请求; 使用布隆过滤器,记录key是否存在,不存在则直接返回,使请求 阅读全文
摘要:
1. 集群解决了什么问题? Redis使用集群方案是为了解决 单个节点数据量大、写入量大产生的性能瓶颈 (主从架构也是单节点写入,但是所有节点都是存储了全量的数据)的问题。 2. 集群是如何进行工作的? Redis采用哈希槽来处理数据与节点之间的映射关系,一个集群共有16384个哈希槽,每个key通 阅读全文
摘要:
1. 哨兵模式解决什么问题? 使用主从架构模式,在主库down机后,就无法提供写服务了,哨兵模式是增加哨兵对Redis工作节点进行监控,在主库挂掉之后,通过选举算法重新选举出合适的节点作为主库提供写服务,以此来提供不间断的服务,提高服务的可用性。 2. 哨兵模式如何工作? 哨兵的工作内容为监控、选主 阅读全文
摘要:
主从架构应用场景 主从架构是为了分担单节点访问的压力以及单节点故障期间仍可提供读操作服务; 由主节点提供读写操作,从节点只提供读操作,这样避免了多节点写导致的写操作互相同步问题,只需要从主节点同步至从节点即可; 主从架构数据同步过程 全量同步 当第一次进行数据同步或repl_backlog_buff 阅读全文
摘要:
为什么有了AOF日志还需要快照? AOF日志和快照都是为了在服务器down机后能恢复数据,但是AOF有一个问题,在恢复数据时,需要一条条执行AOF命令来恢复,这个过程会比较耗时。而快照是将内存中现有的数据进行序列化,在恢复时直接反序列化恢复到内存中即可,这种方式比AOF的恢复方式更加快。 快照的过程 阅读全文
摘要:
1. 为什么使用单线程? 多线程操作存在共享资源并发控制的问题,必定要引入锁,使系统更加复杂且难于调试。为了降低系统的复杂度,更加易于调试及维护,redis在**主流程操作**上使用的是单线程模式; 2. 哪些方面是单线程? 主流程的操作,主要是读写操作。 3. 为什么单线程还那么快? 主流程在直接 阅读全文
摘要:
RedisObject Redis 是 key-value 存储系统,其中key类型一般为字符串,而 value 类型则为 redis 对象(RedisObject)。Redis 对象可以绑定各种类型的数据,譬如 string、list 和set。因此他能很好的将属性和数据分离开。 typedef 阅读全文
摘要:
1. 如何写日志? 记录增删改命令; 在命令执行之后写日志,避免无效命令的检查开销; 2. 三种回写策略(保存到磁盘) Always,同步写回:每个写命令执行完,立马同步地将日志写回磁盘;优点是最多只会丢失上一次操作的日志,缺点是每次都需要写到磁盘,这种操作比较慢; Everysec,每秒写回:每个 阅读全文
摘要:
性能指标维度 吞吐率:每秒事务处理数量,对应的是web的一个请求接口完成一起请求响应的时间;计算公式:总请求数 / 处理完成这些请求数所花费的时间 并发请求数:每秒服务器接收的请求数量; 并发用户数:每秒服务器接收到的连接数量,一个连接可以发送多个请求数量; 用户平均等待时间:每个请求处理完成所需的 阅读全文