redis
redis常见的面试题整理和学习记录
weixin_50220593
这个作者很懒,什么都没留下…
展开
-
redis缓存穿透和雪崩
什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免? 缓存穿透一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 如何避免? 1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。 2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。缓存原创 2021-04-20 17:01:09 · 24 阅读 · 0 评论 -
缓存和数据库如何保持一致
【简介】 对于热点数据(经常被查询,但不经常被修改的数据),我们可以将其放入redis缓存中,以增加查询效率,但需要保证从redis中读取的数据与数据库中存储的数据最终是一致的。本文基于“孤独烟”与“58沈剑”两位的文章,针对一致性的问题进行了汇总总结,两位的原文链接见文末。 【前言】 客户端对数据库中的数据主要有两类操作,读(select)与写(DML)。针对放入redis中缓存的热点数据,当客户端想读取的数据在缓存中就直接返回数据,即命中缓存(cache hit),当读取的数据不在缓存内,就需要转载 2021-04-12 16:02:04 · 230 阅读 · 0 评论 -
redis常见问题
缓存穿透 缓存穿透。产生这个问题的原因可能是外部的恶意攻击,例如,对用户信息进行了缓存,但恶意攻击者使用不存在的用户id频繁请求接口,导致查询缓存不命中,然后穿透 DB 查询依然不命中。这时会有大量请求穿透缓存访问到 DB。 解决的办法如下。 对不存在的用户,在缓存中保存一个空对象进行标记,防止相同 ID 再次访问 DB。不过有时这个方法并不能很好解决问题,可能导致缓存中存储大量无用数据。 使用 BloomFilter 过滤器,BloomFilter 的特点是存在性检测,如果 BloomFilter 中不存原创 2021-04-07 10:51:26 · 70 阅读 · 0 评论 -
如何保证数据库和缓存的一致性
第一种方法: 简单的场景:直接使用 1. 使用Cache Aside pattern 读取的时候,先读取缓存中是否有数据,缓存中没有数据,再去数据库中进行查询,查询出来以后,然后再存入到缓存中 更新的时候,先删除缓存库,然后再更新数据库. 2、先更新数据库,再更新缓存 3、先更新缓存,再更新数据库 4、先更新数据库,再删除缓存 ...原创 2021-04-06 22:51:25 · 67 阅读 · 0 评论 -
redis问题整理
1、redis过期时间如何设置 redis在set值得时候有个参数,是专门设置过期时间的 setRedis(Key,value,time + Math.random() * 10000); 2、如何设置永久有效 set(key,value) Redis 在默认情况下会采用 noeviction 回收策略,即不淘汰任何键值对,当内存己满时只能提供读操作,不能提供写操作 3、如何实现延时队列 ...原创 2021-03-28 14:07:56 · 49 阅读 · 0 评论 -
redis常见面试题(五)
21、Redis 集群的主从复制模型是怎样的? 答: 为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用, 所 以集群使用了主从复制模型,每个节点都会有N-1 个复制品. 22、Redis 集群会有写操作丢失吗?为什么? 答:Redis 并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可 能会丢失写操作。 23、Redis 集群之间是如何复制的? 答: 异步复制 24、Redis 集群最大节点个数是多少? 答: 16384 个。 25、Redis 集群如何选择数据库? 答: Redi原创 2021-03-28 13:02:38 · 121 阅读 · 2 评论 -
redis常见面试题(四)
15、是否使用过Redis 集群,集群的原理是什么? 1)、Redis Sentinal 着眼于高可用,在master 宕机时会自动将slave 提升为 master,继续提供服务。 2)、Redis Cluster 着眼于扩展性,在单个redis 内存不足时, 使用Cluster 进行 分片存储。 16、Redis 集群方案什么情况下会导致整个集群不可用? 答: 有A, B,C 三个节点的集群,在没有复制模型的情况下,如果节点B 失败了, 那么整个集群就会以为缺少5501-11000 这个范围的槽而不可用原创 2021-03-27 18:09:13 · 43 阅读 · 0 评论 -
redis常见面试题(一)
redis面试题(一) 1、redis有下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再 次加载进行使用。 Redis 不仅仅支持简单的key-value 类型的数据, 同时还提供list,set,zset, hash 等数据结构的存储。 Redis 支持数据的备份, 即master-slave 模式的数据备份。 Redis 优势 性能极高– Redis 能读的速度是110000 次/s,写的速度是81000 次/s 。 丰富的数据类型– Redis 支持二进制案原创 2021-03-27 17:41:50 · 92 阅读 · 0 评论 -
redis常见面试题(二)
7、一个字符串类型的值能存储最大容量是多少? 答: 512M 8、Redis 的持久化机制是什么?各自的优缺点? Redis 提供两种持久化机制RDB 和AOF 机制: 1、RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式) 记录redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件, 持久化 结束后, 用这个临时文件替换上次持久化的文件, 达到数据恢复。 优点: 1、只有一个文件dump.rdb,方便持久化。 2、容灾性好,一个文件可以保存到安全的磁盘。 3原创 2021-03-27 17:51:26 · 92 阅读 · 1 评论 -
redis常见面试题(三)
11、Redis 的回收策略(淘汰策略)? volatile-lru:从已设置过期时间的数据集( server.db[i].expires)中挑选最近最 少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集( server.db[i].expires)中挑选将要过 期的数据淘汰 volatile-random:从已设置过期时间的数据集( server.db[i].expires)中任意 选择数据淘汰 allkeys-lru:从数据集( server.db[i].dict)中挑选最近最少使用的原创 2021-03-27 18:02:17 · 90 阅读 · 0 评论