
一、前言
近乎所有与Java相关的面试都会问到缓存的问题,,,,,,,,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,,,,,,,,重大一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,,,,,,,,这些看似不常见的看法,,,,,,,,都与雀魂官网缓存效劳器相关,,,,,,,,一样平常常用的缓存效劳器有Redis、Memcached等,,,,,,,,而笔者现在最常用的也只有Redis这一种。。。。。
若是你在以前面试的时间还没有遇到过面试官问你《为什么说Redis是单线程的以及Redis为什么这么快!》,,,,,,,,那么你看到这篇文章的时间,,,,,,,,你应该以为是一件很幸运的事情!若是你恰恰是一位高逼格的面试官,,,,,,,,你也可以拿这道题去面试扑面“望眼将穿”般的小同伴,,,,,,,,测试一下他的掌握水平。。。。。
好啦!步入正题!我们先探讨一下Redis是什么,,,,,,,,Redis为什么这么快、然后在探讨一下为什么Redis是单线程的??????
二、Redis简介
Redis是一个开源的内存中的数据结构存储系统,,,,,,,,它可以用作:数据库、缓存和新闻中心件。。。。。
它支持多种类型的数据结构,,,,,,,,如字符串(String),,,,,,,,散列(Hash),,,,,,,,列表(List),,,,,,,,荟萃(Set),,,,,,,,有序荟萃(Sorted Set或者是ZSet)与规模盘问,,,,,,,,Bitmaps,,,,,,,,Hyperloglogs 和地理空间(Geospatial)索引半径盘问。。。。。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。。。。。
Redis 内置了复制(Replication),,,,,,,,LUA剧本(Lua scripting),,,,,,,, LRU驱动事务(LRU eviction),,,,,,,,事务(Transactions) 和差别级别的磁盘长期化(Persistence),,,,,,,,并通过 Redis哨兵(Sentinel www.xucaizxyl.com)和自动分区(Cluster)提供高可用性(High Availability)。。。。。
Redis也提供了长期化的选项,,,,,,,,这些选项可以让用户将自己的数据生涯到磁盘上面举行存储。。。。。凭证现真相形,,,,,,,,可以每隔一准时间将数据集导出到磁盘(快照),,,,,,,,或者追加到下令日志中(AOF只追加文件),,,,,,,,他会在执行写下令时,,,,,,,,将被执行的写下令复制到硬盘内里。。。。。您也可以关闭长期化功效,,,,,,,,将Redis作为一个高效的网络的缓存数据功效使用。。。。。
Redis不使用表,,,,,,,,他的数据库不会预界说或者强制去要求用户对Redis存储的差别数据举行关联。。。。。
数据库的事情模式按存储方法可分为:硬盘数据库和内存数据库。。。。。Redis 将数据贮保存内存内里,,,,,,,,读写数据的时间都不会受到硬盘 I/O 速率的限制,,,,,,,,以是速率极快。。。。。
(1)硬盘数据库的事情模式:
这里写图片形貌
(2)内存数据库的事情模式:
这里写图片形貌
看完上述的形貌,,,,,,,,关于一些常见的Redis相关的面试题,,,,,,,,是否有所熟悉了,,,,,,,,例如:什么是Redis、Redis常见的数据结构类型有哪些、Redis是怎样举行长期化的等。。。。。