
Redis
文章平均质量分 75
dhylanyu1
这个作者很懒,什么都没留下…
展开
-
Redis源码
Redis源码stringHashSetListZSetstringRedis的string又叫SDS,Simple Dynamic String,是一个带长度信息的字节数组struct SDS<T>{ T capcity; T len; byte flags; byte[] content;}当字符串比较短时,len和capcity可以用byte和short来表示,Redis规定字符串长度不超过512MB。string内部有两种存储,当长度特别短时,使用embstr,当长原创 2021-07-18 21:13:45 · 93 阅读 · 0 评论 -
Redis核心原理
Redis核心原理非阻塞IO事件轮询(多路复用)快照原理管道PipeLine内存回收机制主从增量同步槽位迁移感知过期策略从节点的过期策略非阻塞IO非阻塞IO在套接字对象上提供了Non_Blocking选项,当选项打开时,读写方法不会阻塞,能读多少读多少,能写多少写多少,取决于内核为套接字分配的缓冲区内部的数据字节数。事件轮询(多路复用)现代操作系统多路复用使用epoll(linux)和kqueue(macosx),因为select系统调用性能在描述符特别多时会变得非常差。快照原理Redis使用C原创 2021-07-18 20:52:28 · 84 阅读 · 0 评论 -
Redis 常见面试题(一)
@[TOC]Redis 常见面试题缓存穿透说明穿透指的是数据既不存在于缓存中,也不存在于数据库,那么对该数据的访问就会透过缓存,请求数据库直至压垮数据库,如用一个不存在的用户ID访问,可能就会被恶意利用频繁攻击。解决使用布隆过滤器存储所有的有效数据,这样查询就在外部被拦截不会到缓存层、数据库层进行访问了查询的空结果仍然缓存起来,但是设置的过期时间比较短,不超过5分钟,这样也会带来无效缓存比较多的问题击穿说明缓存中没有但是数据库中有的数据,一般是指缓存过期造成的。当大量请求读取缓存发现没原创 2021-07-15 11:15:32 · 102 阅读 · 0 评论 -
Redis 基础数据结构
Redis 基础数据结构概述string内部结构应用list内部结构应用Hash内部结构应用set内部结构应用zset内部结构跳跃列表应用概述Redis包括5种基础数据结构,分别是string、list、hash、set和zset。string内部结构底层是用字符数组表示,类似于Java ArrayList,是可以动态修改的,采用预分配冗余空间的方式减少内存频繁分配,如当字符串长度小于1MB时,加倍扩容;当长度大于1MB时,每次扩1MB,最大长度是512MB。如果key-value的value是原创 2021-07-14 22:07:14 · 53 阅读 · 0 评论 -
Redis 常见面试题(二)
@[TOC]常见面试题缓存穿透、击穿、雪崩滑动窗口延迟队列底层数据结构及实现stringhashlistsetzsethyperloglogstream过期机制过期策略Slave如何同步Master数据集群原理,一致性哈希分布式锁原创 2021-07-14 16:58:31 · 67 阅读 · 0 评论