您好,登錄后才能下訂單哦!
面試題自測:
1、什么是 Redis?簡述它的優缺點?
2、Redis 與 memcached 相比有哪些優勢?
3、Redis 支持哪幾種數據類型?
4、Redis 主要消耗什么物理資源?
5、Redis 有哪幾種數據淘汰策略?
6、Redis 官方為什么不提供 Windows 版本?
7、一個字符串類型的值能存儲最大容量是多少?
8、為什么 Redis 需要把所有數據放到內存中?
9、Redis 集群方案應該怎么做?都有哪些方案?
10、Redis 集群方案什么情況下會導致整個集群不可用?
11、MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點數據?
12、Redis 有哪些適合的場景?
13、Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
14、Redis 和 Redisson 有什么關系?
15、Jedis 與 Redisson 對比有什么優缺點?
更多面試資料,可以加VX領取:13272413561
以下是答案
1、什么是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像 memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤 上進行保存。 因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的 Key-Value DB。 Redis 的出色的地方不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限 制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。 比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高 性能的 tag 系統等等。 另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的 memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能 讀寫,因此 Redis 適合的場景主要局限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什么物理資源?**
內存。
5、Redis 有哪幾種數據淘汰策略?**
1.noeviction:返回錯誤當內存限制達到,并且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限于在過期集合的鍵,使得新添加的數據有空間存 放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限于在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,并且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間 存放。
6、Redis 官方為什么不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問 題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什么 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,并通過異步的方式將數據寫入磁盤。 所以 redis 具有快速和數據持久化的特征,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的 性能。 在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達 到內存限值后不能繼續插入新值。
9、Redis 集群方案應該怎么做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點 數據可恢復到新 hash 節點。 redis cluster3.0 自帶的集群,特點在于他的分布式算法不是一致性 hash,而是 hash 槽的概念,以及自 身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然后去對應的 redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效后的替代算法方 案,數據震蕩后的自動腳本恢復,實例的監控。
10、Redis 集群方案什么情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有復制模型的情況下,如果節點 B 失敗了,那么整個集群就會以為缺少 5501-11000 這個范圍的槽而不可用。
11、MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點數據?
redis 內存數據集大小上升到一定大小的時候,就會施行數據淘汰策略。 其實面試除了考察 Redis,不少公司都很重視高并發高可用的技術,特別是一線互聯網公司,分布式、 JVM、spring 源碼分析、微服務等知識點已是面試的必考題。
12、Redis 有哪些適合的場景?
(1)會話緩存(Session Cache) 最常用的一種使用 Redis 的情景是會話緩存(sessioncache),用 Redis 緩存會話比其他存儲(如 Memcached)的優勢在于:Redis 提供持久化。當維護一個不是嚴格要求一致性的緩存時,如果用戶的 購物車信息全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎? 幸運的是,隨著 Redis 這些年的改進,很容易找到怎么恰當的使用 Redis 來緩存會話的文檔。甚至廣為 人知的商業平臺 Magento 也提供 Redis 的插件。
(2)全頁緩存(FPC) 除基本的會話 token 之外,Redis 還提供很簡便的 FPC 平臺。回到一致性問題,即使重啟了 Redis 實 例,因為有磁盤的持久化,用戶也不會看到頁面加載速度的下降,這是一個極大改進,類似 PHP 本地 FPC。 再次以 Magento 為例,Magento 提供一個插件來使用 Redis 作為全頁緩存后端。 此外,對 WordPress 的用戶來說,Pantheon 有一個非常好的插件 wp-redis,這個插件能幫助你以最快 速度加載你曾瀏覽過的頁面。
(3)隊列 Reids 在內存存儲引擎領域的一大優點是提供 list 和 set 操作,這使得 Redis 能作為一個很好的消息隊列 平臺來使用。Redis 作為隊列使用的操作,就類似于本地程序語言(如 Python)對 list 的 push/pop 操作。 如果你快速的在 Google 中搜索“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的 就是利用 Redis 創建非常好的后端工具,以滿足各種隊列需求。例如,Celery 有一個后臺就是使用 Redis 作為 broker,你可以從這里去查看。
(4)排行榜/計數器Redis 在內存中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序集合(SortedSet)也使 得我們在執行這些操作的時候變的非常簡單,Redis 只是正好提供了這兩種數據結構。 所以,我們要從排序集合中獲取到排名最靠前的 10 個用戶–我們稱之為“user_scores”,我們只需要像 下面一樣執行即可: 當然,這是假定你是根據你用戶的分數做遞增的排序。如果你想返回用戶及用戶的分數,你需要這樣執 行: ZRANGE user_scores 0 10 WITHSCORES Agora Games 就是一個很好的例子,用 Ruby 實現的,它的排行榜就是使用 Redis 來存儲數據的,你可 以在這里看到。
(5)發布/訂閱 最后(但肯定不是最不重要的)是 Redis 的發布/訂閱功能。發布/訂閱的使用場景確實非常多。我已看見 人們在社交網絡連接中使用,還可作為基于發布/訂閱的腳本觸發器,甚至用 Redis 的發布/訂閱功能來建 立聊天系統!
13、Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
Redisson、Jedis、lettuce 等等,官方推薦使用 Redisson。
14、Redis 和 Redisson 有什么關系?
Redisson 是一個高級的分布式協調 Redis 客服端,能幫助用戶在分布式環境中輕松實現一些 Java 的對 象 (Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, ReadWriteLock, AtomicLong, CountDownLatch, Publish / Subscribe, HyperLogLog)。
15、Jedis 與 Redisson 對比有什么優缺點?
Jedis 是 Redis 的 Java 實現的客戶端,其 API 提供了比較全面的 Redis 命令的支持; Redisson 實現了分布式和可擴展的 Java 數據結構,和 Jedis 相比,功能較為簡單,不支持字符串操作, 不支持排序、事務、管道、分區等 Redis 特性。Redisson 的宗旨是促進使用者對 Redis 的關注分離,從 而讓使用者能夠將精力更集中地放在處理業務邏輯上。
更多面試資料,可以加VX領取:13272413561
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。