![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 62
龚厂长
这个作者很懒,什么都没留下…
展开
-
缓存雪崩、缓存穿透、缓存击穿
本文主要介绍一下缓存雪崩、缓存穿透、缓存击穿三者的区别,以及如何避免。 缓存雪崩 缓存承担了大量的查询请求,有力的保护了数据库,但是某一时刻,缓存的数据全部失效,或者缓存宕机,导致所有的查询都落入到了数据库上,数据库突然收到暴增的流量,严重会导致数据库宕机。 解决方案: 设置缓存失效时间时,加入随机值,避免大量缓存同时失效。 使用redis集群。 对后端资源的访问,比如数据库,使用限流工具。 缓存穿透 缓存穿透是查询一个不存在的数据,在缓存上没有命中,程序接着访问数据库,数据库也没有命中,同时查询完数据原创 2021-04-24 16:24:56 · 157 阅读 · 5 评论 -
论Redis 7种加锁方式的优缺点
本文参考文章《论Redis分布式锁的正确使用姿势》总结一下文中提到的7种加锁方式的优缺点。 方案一:SETNX + EXPIRE 优点:实现简单,通过修改过期时间可以支持锁重入,锁超时自动释放; 缺点:因为上述命令是分两步执行,如果第二步执行失败,将造成无法解锁。 方案二:SETNX + value值是(系统时间+过期时间) 优点:加锁是原子操作,解决了方案一的缺点。 缺点:实现复杂,每个机器的时间必须保持同步,其他加锁线程会修改过期时间,锁有可能被其他线程错误释放。 方案三:使用Lua脚本(包含SETNX原创 2021-04-24 13:56:56 · 3013 阅读 · 3 评论 -
redis要点总结
redis是一个非常优秀的内存数据库,有着非常广泛的应用。本文接下来对redis的要点和原理做一个总结。 文章目录一、数据结构1、字符串2、链表3、字典 一、数据结构 1、字符串 redis是使用C语言编写的,但是它没有使用C语言的字符串表示方式,而是内部创建了一个名为“SDS”(简单动态字符串)的数据结构来表示字符串。在redis中,键总是使用字符串表示。 字符串使用下面的数据结构表示: struct sdshdr{ int len;//字符串长度,也是buf数组中已使用字节数 int free;//原创 2021-03-28 13:06:11 · 173 阅读 · 0 评论