没有合适的资源?快使用搜索试试~ 我知道了~
redis经典面试题详细
5星 · 超过95%的资源 需积分: 1 1 下载量 172 浏览量
2023-02-17
15:04:44
上传
评论 2
收藏 1.39MB PDF 举报
温馨提示
试读
30页
概述2.数据类型3.持久化4.过期键的删除策略5.内存相关6.线程模型7.事务8.集群方案9.分区10.分布式问题11.缓存异常12.常用工具 13.其他问题Redis与Memcached的区别 如何保证缓存与数据库双写时的数据一致性? Redis常见性能问题和解决方案? Redis官方为什么不提供Windows版本? 一个字符串类型的值能存储最大容量是多少? Redis如何做大量数据插入? 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来? 使用Redis做过异步队列吗,是如何实现的 Redis如何实现延时队列 Redis回收进程如何工作的? Redis回收使用的是什么算法?
资源推荐
资源详情
资源评论
概述
什么是Redis
Redis有哪些优缺点
为什么要用 Redis /为什么要用缓存
为什么要用 Redis 而不用 map/guava 做缓存?
Redis为什么这么快
数据类型
Redis有哪些数据类型
Redis的应用场景
持久化
什么是Redis持久化?
Redis 的持久化机制是什么?各自的优缺点?
如何选择合适的持久化方式
Redis持久化数据和缓存怎么做扩容?
过期键的删除策略
Redis的过期键的删除策略
Redis key的过期时间和永久有效分别怎么设置?
我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么处理呢?
内存相关
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
Redis的内存淘汰策略有哪些
Redis主要消耗什么物理资源?
Redis的内存用完了会发生什么?
Redis如何做内存优化?
线程模型
Redis线程模型
事务
什么是事务?
Redis事务的概念
Redis事务的三个阶段
Redis事务相关命令
事务管理(ACID)概述
Redis事务支持隔离性吗
Redis事务保证原子性吗,支持回滚吗
Redis事务其他实现
集群方案
哨兵模式
官方Redis Cluster 方案(服务端路由查询)
基于客户端分配
基于代理服务器分片
Redis 主从架构
Redis集群的主从复制模型是怎样的?
生产环境中的 redis 是怎么部署的?
说说Redis哈希槽的概念?
Redis集群会有写操作丢失吗?为什么?
Redis集群之间是如何复制的?
Redis集群最大节点个数是多少?
Redis集群如何选择数据库?
分区
Redis是单线程的,如何提高多核CPU的利用率?
为什么要做Redis分区?
你知道有哪些Redis分区实现方案?
Redis分区有什么缺点?
分布式问题
Redis实现分布式锁
如何解决 Redis 的并发竞争 Key 问题
分布式Redis是前期做还是后期规模上来了再做好?为什么?
什么是 RedLock
缓存异常
缓存雪崩
缓存穿透
缓存击穿
缓存预热
缓存降级
热点数据和冷数据
缓存热点key
常用工具
Redis支持的Java客户端都有哪些?官方推荐用哪个?
Redis和Redisson有什么关系?
Jedis与Redisson对比有什么优缺点?
其他问题
Redis与Memcached的区别
如何保证缓存与数据库双写时的数据一致性?
Redis常见性能问题和解决方案?
Redis官方为什么不提供Windows版本?
一个字符串类型的值能存储最大容量是多少?
Redis如何做大量数据插入?
假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它
们全部找出来?
使用Redis做过异步队列吗,是如何实现的
Redis如何实现延时队列
Redis回收进程如何工作的?
Redis回收使用的是什么算法?
概述
什么是Redis
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型
(NoSQL)的键值对数据库。
Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字
符串、列表、集合、散列表、有序集合。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用
于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也
经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方
案。
Redis有哪些优缺点
优点
读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。
支持数据持久化,支持AOF和RDB两种持久化方式。
支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构。
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
缺点
数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量
的高性能操作和运算上。
Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动
切换前端的IP才能恢复。
主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线
时必须确保有足够的空间,这对资源造成了很大的浪费。
为什么要用 Redis /为什么要用缓存
主要从“高性能”和“高并发”这两点来看待这个问题。
高性能:
假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访
问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就
是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数
据即可!
高并发:
直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数
据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。
img
为什么要用 Redis 而不用 map/guava 做缓存?
缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最
主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都
需要各自保存一份缓存,缓存不具有一致性。
使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,
缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。
Redis为什么这么快
1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于
HashMap,HashMap 的优势就是查找和操作的时间复杂度都是O(1);
2、数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的;
3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消
耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消
耗;
4、使用多路 I/O 复用模型,非阻塞 IO;
5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis 直接
自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;
数据类型
Redis有哪些数据类型
Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求
img
剩余29页未读,继续阅读
郎伟学架构
- 粉丝: 4
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页