redis
一路向北S
这个作者很懒,什么都没留下…
展开
-
Redis 面试题总结
redis 简介简单来说redis就是一个数据库,不过与传统数据库不同的是redis的数据是存在内存的,所以读写速度非常快,因此redis被广泛应用于缓存方向。另外,redis也经常用来做分布式锁。redis提供了多种数据类型来支持不同的业务场景。除此之外,redis支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案。为啥Redis那么快?Redis采用的是基于内存的单进程单线程模型的KV数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS。完全基于内存,绝大部分请求是纯粹转载 2020-07-28 15:27:02 · 318 阅读 · 0 评论 -
Redis实现分布式锁的正确姿势
1. 前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于Zookeeper的分布式锁。本篇详细介绍如何正确地实现Redis分布式锁。2. 分布式锁的实现要点为了确保分布式锁可用,我们至少需要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动释放锁,也能保证后续其他客户端能加锁。具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。解铃还须系铃人。原创 2020-07-17 23:34:26 · 305 阅读 · 0 评论 -
Redis性能优化的13条建议
Redis是基于单线程模型实现的,也就是Redis是使用一个线程来处理所有的客户端请求的,尽管Redis使用了非阻塞式IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是O(1)),但由于Redis是单线程执行的特点,因此它对性能的要求更加苛刻。缩短键值对的存储长度键值对的长度是和性能成反比的。...转载 2020-07-08 16:25:28 · 2133 阅读 · 1 评论 -
缓存穿透、缓存击穿、缓存雪崩、缓存热点和解决方案
文章目录缓存穿透缓存雪崩缓存击穿缓存穿透有大量的恶意清奇查询不存在的key,那么大并发请求直接去查db,这样很容易把数据库压垮解决方案:把key为空的也放到缓存使用布隆过滤器,把不存在的key值放到一个大的bitmap,下次请求直接回被过滤掉缓存雪崩大量缓存同时失效,高并发时请求直接打到db,导致数据库雪崩解决方案:分散存储过期时间,比如在过期时间基础上加随机值,1~10这样分散存储过期时间,很难再出现雪崩现象。缓存击穿一个key失效了,恰好大量请求过来查询,这样都会直接到数据库,导原创 2020-06-30 16:52:57 · 265 阅读 · 0 评论