摘要: 一、缓存雪崩 原因:Redis服务崩溃、缓存同一时间同时过期等 解决方法: 1.给设置的过期时间加一个随机数,避免同一时间删除 2. 事前:建立redis集群 事中:本地缓存+限流 事后:重复加载数据 二、缓存穿透 原因:缓存服务器上面不存在的数据,到数据库中依然不存在,一直返回空值 解决方法: 1 阅读全文
posted @ 2021-02-18 16:29 RookieCoderAdu 阅读(222) 评论(0) 推荐(0)
摘要: 可以采用三种方法: 定时删除、定期删除、惰性删除 一、定时删除 写一个定时器,将key的过期时间到达时,立刻将键删除 优点:节约内存 缺点:增加CPU压力,影响redis服务器响应时间和吞吐量 二、定期删除 activeExpireCycle()函数对每个expires(数据库)逐一进行检测对每个数 阅读全文
posted @ 2021-02-18 15:22 RookieCoderAdu 阅读(725) 评论(0) 推荐(0)
摘要: 使用TTL 指令可以查看key的过期时间 包含三种状态; 当key不存在或者已经过期的时候,返回-2 当key存在但是没有设置过期时间的时候返回-1 当设置了过期时间的时候返回过期时间,以秒为单位 # 不存在的 key redis> FLUSHDB OK redis> TTL key (intege 阅读全文
posted @ 2021-02-18 14:15 RookieCoderAdu 阅读(1067) 评论(0) 推荐(0)
摘要: truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。 truncate只能作用于表;delete,drop可作用于表、视图等。 truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。 truncat 阅读全文
posted @ 2021-02-18 11:54 RookieCoderAdu 阅读(125) 评论(0) 推荐(0)
摘要: 此方法只适用于对海量数据查询的优化,对于数据量较少的查询不具有参考性 一、尽量避免全表扫描,使用索引 1.在常用字段上面建立索引,方便查找 2.避免null值判断。eg: where xx is null。 改进:可以设置默认值代替null 3.避免使用不等于操作符,如!=,<> 4.避免使用or。 阅读全文
posted @ 2021-02-18 11:48 RookieCoderAdu 阅读(554) 评论(0) 推荐(0)