
Redis
搬砖小松鼠
贮藏坚果,以备过冬!
展开
-
Redis第五篇——大key和热key问题
大key问题 大key会影响到服务的性能,比如value非常大的或者集合元素非常多的,那么如何发现呢? (1)scan扫描 Redis提供了scan指令可按照一定的偏移量进行扫描(区别于keys命令),可以每扫描一批过一会再扫 (2)查询或写入的时候进行统计 每次查询或者写入的时候上报当前key的情况 热key问题 线上的Redis一般都是集群进行部署,对于Redis-Cluster模式,热点的key会导致部分分片的负载非常高而被拖垮。热key主要分为读热key和写热key 发现热key原创 2020-06-29 20:43:30 · 2928 阅读 · 0 评论 -
Redis第四篇——缓存
这一篇和Redis本身关系不大,而是我们在日常将Redis作为缓存使用时会遇到的几个问题 缓存穿透 关键点:访问一个不存在的key。 当请求一个不存在的key时,缓存就没用了,这样每次请求都直接打到我们后台的DB 解决办法: (1)对不存在的key进行缓存 (2)使用布隆过滤器 布隆过滤器的特点:可保证返回不存在的元素一定不存在,返回存在的元素大概率存下,因此是存在一定的误判率的 缓存击穿 关键点:对于设置了过期时间的缓存数据,当该数据过期时,此时有大量对该数据的请求,就会导致这波突然的流量原创 2020-05-30 17:05:27 · 291 阅读 · 0 评论 -
Redis第三篇——集群
前面两篇已经对Redis的基本数据类型,Redis的过期和持久化策略进行了讲述,但即便拥有了恢复的能力,而在故障恢复的这段时间服务也是完全挂掉不可用,对于一个高可用的系统来说,这是完全不能接受的,因此我们要告别单兵作战时代,看看Redis是如何进行集群作战的 主从复制 Redis主从关系是通过slaveof命令来实现的,调用slaveof命令的服务器为从服务器,命令的参数是主服务器。从服务器通过复制来从主服务器获取数据,复制包含两个过程:同步(sync)和命令传播两个操作: 同步:将从服务器的数据状态原创 2020-05-30 16:54:17 · 304 阅读 · 0 评论 -
Redis第二篇——持久化
Redis之所以高性能,速度快,其中一个原因就是其数据是存储在内存中的,而对于内存中的数据就会遇到以下几个问题: (1)内存中数据过期了怎么处理? (2)内存满了怎么处理? (3)服务故障内存数据丢了怎么处理? 过期处理 常见的对于设置有过期时间的数据处理方式如下: 定时清理 在放入数据的时候,为设置了过期时间的数据启动一个定时器,当数据到期时去清理数据。这种方式好处是可以及时清理过期数据,对内存非常友好,但缺点是如果大量的数据在同一时间过期,需要占据非常多的cpu时间去执行清理任务,而Red原创 2020-05-30 15:17:49 · 253 阅读 · 0 评论 -
Redis第一篇——几种数据类型
标题上写Redis的几种数据类型,主要是与实现这几种数据类型的底层数据结构进行区分的。Redis支持的每种数据类型由其底层数据结构机型实现。 几种数据类型 1.string String类型用于存储整数、字符串等,其底层是通过Redis在C语言基础上定义的SDS(Simple Dynamic String 简单动态字符串实现的),其在C字符串的基础上额外记录len和free字段,这样可以加速字符串的一些操作,同时让字符串有了预分配和懒回收的能力 预分配:当对字符串进行变更需要进行扩容时,如果字符串的原创 2020-05-30 14:30:17 · 233 阅读 · 0 评论