6、Memcache 与 Redis 的区别都有哪些?
6、Memcache 与 Redis 的区别都有哪些?
3、使用底层模型不同它们之间底层实现方式以及与客户端之间通信的应用协议不一样。 Redis 直接自己构建了 VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
7、Redis 是单进程单线程的?
Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。
8、一个字符串类型的值能存储最大容量是多少?
512M
9、Redis持久化机制
Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。
实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。
RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snapshot快照存储,对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。(快照可以是其所表示的数据的一个副本,也可以是数据
的一个复制品。)
AOF:Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于MySQL的binlog。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
10、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
一、缓存雪崩
我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一
系列连锁反应,造成整个系统崩溃。
解决办法:
大多数系统设计者考虑用加锁(最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。还有一个简单方案就时讲缓存失效时间分散开。
二、缓存穿透缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再
查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。
解决办法;
最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故
障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。通过这个直接设置的默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问数据库,这种办法最简单粗暴。
5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?
对于空间的利用到达了一种极致,那就是Bitmap和布隆过滤器(Bloom Filter)。
Bitmap:典型的就是哈希表缺点是,Bitmap对于每个元素只能记录1bit信息,如果还想完成额外的功能,恐怕只能靠牺牲更多的空间、时间来完成了
布隆过滤器(推荐)
就是引入了k(k>1)k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率下,完成元素判重的过程。
它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
Bloom-Filter算法的核心思想就是利用多个不同的Hash函数来解决“冲突”。
Hash存在一个冲突(碰撞)的问题,用同一个Hash得到的两个URL的值有可能相同。为了减少冲突,我们可以多引入几个Hash,如果通过其中的一个Hash值我们得出某元素不在集合中,那么该元素肯定不在集合中。只有在所有的Hash函数告诉我们该元素在集合中时,才能确
定该元素存在于集合中。这便是Bloom-Filter的基本思想。
Bloom-Filter一般用于在大数据量的集合中判定某元素是否存在。
三、缓存预热

全站分卷索引 · 222 卷
- 1JavaOOP面试题
- 27、Java的数据结构有那些?
- 314、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
- 420、访问修饰符 public,private,protected,以及不写(默认) 时的区别?
- 525、equals与==的区别
- 641、Object类常用方法有那些?
- 747、构造方法能不能显式调用?
- 854、String str=”aaa”,与String str=new String(“aaa”)一样吗?
- 963、Hashcode的作用
- 1066、有没有可能两个不相等的对象有相同的hashcode
- 1170、final、finalize()、finally
- 1278、什么是成员内部类
- 1385、排序都有哪几种方法?请列举
- 1495、String 和 StringBuilder、StringBuffer 的区别?
- 15100、Java 中会存在内存泄漏吗,请简单描述。
- 16101、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被 synchronized修饰?
- 17104、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?
- 18107、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
- 193、Collection包结构,与Collections的区别
- 208、集合类存放于 Java.util 包中, 主要有几 种接口
- 2114、HashSet( Hash 表)
- 2216、说说LinkHashSet( HashSet+LinkedHashMap)
- 2319、HashTable(线程安全)
- 2421、LinkHashMap(记录插入顺序)
- 253、如何自定义一个异常
- 266、Thow与thorws区别
- 273、常用io类有那些
- 2810、JAVA NIO
- 29Java反射面试题
- 308、Java 反射 API
- 31Java序列化面试题
- 327、序列化 ID
- 332、注解是什么?
- 343、实现 Runnable 接口。
- 357、如何停止一个正在运行的线程
- 368、notify()和notifyAll()有什么区别?
- 3711、Thread 类中的start() 和 run() 方法有什么区别?
- 3817、SynchronizedMap和ConcurrentHashMap有什么区别?
- 3922、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
- 4030、阻塞状态(BLOCKED)
- 4133、start 与 run 区别
- 4238、Synchronized 同步锁
- 4340、Condition 类和 Object 类锁方法区别区别
- 4443、Semaphore 与 ReentrantLock 区别
- 4549、轻量级锁
- 4657、线程中断(interrupt)
- 4764、寄存器
- 4874、拒绝策略
- 4977、Java 中的阻塞队列
- 5078、ArrayBlockingQueue(公平、非公平)
- 5185、在 java 中守护线程和本地线程区别
- 5292、在 Java 中 Executor 和 Executors 的区别?
- 5397、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
- 54103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- 55JVM面试题
- 5610、解释 Java 堆空间及 GC?
- 5712、程序计数器(线程私有)
- 5818、描述一下 JVM 加载 class 文件的原理机制
- 5923、新生代
- 6029、标记清除算法( Mark-Sweep)
- 6132、分代收集算法
- 6238、JAVA虚引用
- 6346、Parallel Scavenge 收集器(多线程复制算法、高效)
- 6459、CMS 收集器(多线程标记清除算法)
- 6562、类加载器
- 6663、双亲委派
- 6767、JVM内存模型
- 6876、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
- 6979、Java对象创建过程
- 7086、Minor GC与Full GC分别在什么时候发生?
- 712、TokuDB( Fractal Tree-节点带数据)
- 726、InnoDB与MyISAM的区别
- 7311、第二范式(2nd NF- 每个表只描述一件事情)
- 7415、简单说一说drop、delete与truncate的区别
- 7520、大表如何优化?
- 7622、分库分表之后,id 主键如何处理
- 7729、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
- 7838、列对比运算符是什么?
- 7948、MySQL 支持事务吗?
- 8055、什么情况下设置了索引但无法使用
- 8161、为表中得字段选择合适得数据类型
- 8267、完整性约束包括哪些?
- 8375、主键、外键和索引的区别?
- 8483、什么是页级锁
- 856、Memcache 与 Redis 的区别都有哪些?
- 8611、热点数据和冷数据是什么
- 8715、Redis 常见性能问题和解决方案?
- 8819、Redis 常见性能问题和解决方案:
- 8926、Redis 集群方案什么情况下会导致整个集群不可用?
- 9040、Redis 如何做内存优化?
- 9147、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 922、memcached 服务在企业集群架构中有哪些应用场景?
- 935、memcached 是怎么工作的?
- 9412、如何将 memcached 中 item 批量导入导出?
- 9520、什么是二进制协议,我该关注吗?
- 96MongoDB面试题
- 974、NoSQL数据库有哪些类型?
- 9815、如何执行事务/加锁?
- 9929、如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?
- 10042、分析器在MongoDB中的作用是什么?
- 10156、MongoDB的优势有哪些
- 10267、MongoDB中的命名空间是什么意思?
- 10375、在MongoDB中如何除去一个数据库Collection Methods24.在MongoDB中如何除去一个数据库
- 10485、如何在集合中插入一个文档
- 10593、在MongoDB中如何排序
- 1065、Spring Framework 中有多少个模块,它们分别是什么?
- 1078、使用 Spring 有哪些方式?
- 10816、Spring IoC 的实现机制。
- 10919、spring 支持集中 bean scope?
- 11023、自动装配有哪些方式?
- 11130、@Qualifier 注解有什么用?
- 11234、spring JDBC API 中存在哪些类?
- 11340、什么是切点(JoinPoint)
- 11446、如何理解 Spring 中的代理?
- 11550、介绍一下 WebApplicationContext
- 11655、Spring中Autowired和Resource关键字的区别
- 11757、讲一下什么是Spring
- 11859、springMVC是什么
- 11965、解释Spring支持的几种bean的作用域。
- 12071、解释 AOP 模块
- 12181、有哪些不同类型的 IOC(依赖注入)方式?
- 12291、什么是 Spring 的内部 bean?
- 123102、@Autowired 注解
- 124113、解释 AOP
- 125126、什么是 Spring 的 MVC 框架?
- 1263、Spring Boot 有哪些优点?
- 1277、如何在Spring Boot启动的时候运行一些特定的代码?
- 12815、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
- 12923、如何实现 Spring Boot 应用程序的安全性?
- 13034、什么是 AOP?
- 13140、运行 Spring Boot 有哪几种方式?
- 13249、如何重新加载Spring Boot上的更改,而无需重新启动服务器?
- 13353、Spring Boot 还提供了其它的哪些 Starter Project Options?
- 13455、创建一个 Spring Boot Project 的最简单的方法是什么?
- 13558、 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
- 13661、什么是 Spring Data REST?
- 13765、如何使用 Spring Boot 生成一个 WAR 文件?
- 13873、如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
- 13976、Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
- 14081、如何使用配置文件通过 Spring Boot 配置特定环境的配置?
- 14183、如何禁用特定的自动配置?
- 14287、SpringBoot 中静态首页默认位置可以放在哪里?
- 143Spring Cloud面试题
- 1447、什么是 Netflix Feign?它的优点是什么?
- 1459、什么是微服务
- 14611、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
- 14714、说说 RPC 的实现原理
- 14819、微服务之间是如何独立通讯的?
- 14927、springcloud断路器作用?
- 15035、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
- 1513、使用 rabbitmq 的场景
- 15210、使用 RabbitMQ 有什么好处?
- 15315、如何保证消息的可靠传输?如果消息丢了怎么办
- 15417、如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决
- 15520、什么是Publisher ?
- 15631、Fanout(广播分发)?
- 157Dubbo 面试题
- 1585、一般使用什么注册中心?还有别的选择吗?
- 15914、Dubbo 集群容错有几种方案?
- 16019、Dubbo 配置文件是如何加载到 Spring 中的?
- 16124、Dubbo 必须依赖的包有哪些?
- 16231、Dubbo是什么?
- 16342、Dubbo可以对结果进行缓存吗?
- 16430、服务读写推荐的容错策略是怎样的?
- 165MyBatis 面试题
- 1668、 模糊查询 like 语句该怎么写?
- 16713、如何获取自动生成的(主)键值?
- 16814、在 mapper 中如何传递多个参数?
- 16918、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
- 17024、什么是 MyBatis 的接口绑定?有哪些实现方式?
- 17128、MyBatis实现一对一有几种方式?具体怎么操作的 ?
- 1726、四种类型的数据节点 Znode
- 17311、ACL 权限控制机制
- 17417、zookeeper 是如何保证事务的顺序一致性的?
- 17524、Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?
- 17632、分布式通知和协调
- 17739、事务编号 Zxid(事务请求计数器+ epoch)
- 17846、ZAB 协议 JAVA 实现(FLE-发现阶段和同步合并为 Recovery Phase(恢复阶段) )
- 1791、栈(stack)
- 1805、排序二叉树
- 1816、 前缀树
- 1827、红黑树
- 1838、B-TREE
- 1849、位图
- 185算法面试题
- 1863、假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)
- 1875、二分查找
- 1888、快速排序算法
- 1899、希尔排序算法
- 19010、归并排序算法
- 19111、桶排序算法
- 19213、剪枝算法
- 19317、AES
- 19419、CRC
- 19521、更多算法练习
- 1963、elasticsearch 索引数据多了怎么办,如何调优,部署
- 1976、详细描述一下 Elasticsearch 搜索的过程?
- 1989、Elasticsearch 是如何实现 Master 选举的?
- 19913、详细描述一下 Elasticsearch 更新和删除文档的过程。
- 20017、对于 GC 方面,在使用 Elasticsearch 时要注意什么?
- 20122、介绍一下你们的个性化搜索方案?
- 202Kafka 面试题
- 2033、数据文件分段 segment(顺序读写、分段命令、二分查找)
- 2048、Consumer Group
- 20513、讲一下主从同步
- 20619、消费者如何不自动提交偏移量,由应用提交?
- 207微服务 面试题
- 2083、微服务有哪些特点?
- 2095、微服务架构如何运作?
- 2108、在使用微服务架构时,您面临哪些挑战?
- 21113、什么是无所不在的语言?
- 21220、Spring Cloud 解决了哪些问题?
- 21328、双因素身份验证的凭据类型有哪些?
- 21434、什么是端到端微服务测试?
- 21540、我们如何进行跨功能测试?
- 21646、什么是持续集成(CI)?
- 2173、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当
- 2188、建立软链接(快捷方式),以及硬链接的命令
- 21914、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
- 22025、怎么查看系统支持的所有信号?
- 22134、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
- 22241、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?