做爲一個後端開發人員,不僅是要求開發人員須要掌握 Redis,也要求運維人員也要懂 Redis。因爲 Redis 的運用普遍,咱們也知道它的重要性,至此面試中常常被問到。在這 80道 Redis 面試題中,考察知識點包括基礎、數據結構指令、高併發處理、持久化、集羣、複製、Redis 應用等。若是你最近在準備面試或者在學習 Redis,我相信本次小編能夠知足你的面試須要。也但願我花了半個月整理的這些題目,解答對你有所幫助。java
小編分享的這份金三銀四Java後端開發面試總結包含了JavaOOP、Java集合容器、Java異常、併發編程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL數據庫、消息中間件MQ、Dubbo、Linux、ZooKeeper、 分佈式&數據結構與算法等26個專題技術點,都是小編在各個大廠總結出來的面試真題,已經有不少粉絲靠這份PDF拿下衆多大廠的offer,今天在這裏總結分享給到你們!【持續更新中!】web
完整版Java面試題地址:2021最新面試題合集集錦。面試
序號 | 專題 | 內容 | 連接 |
---|---|---|---|
1 | 中間件 | Java中間件面試題(2021最新版) | https://blog.51cto.com/14994509/2692669 |
2 | 微服務 | Java微服務面試題(2021最新版) | http://www.javashuo.com/article/p-haiifnkb-vk.html |
3 | 併發編程 | Java併發編程面試題(2021最新版) | http://www.javashuo.com/article/p-rirekprn-vk.html |
4 | Java基礎 | Java基礎知識面試題(2021最新版) | https://blog.51cto.com/blogger/success/2706687 |
5 | Spring Boot | Spring Boot面試題(2021最新版) | http://www.javashuo.com/article/p-etpzmprr-vk.html |
6 | Redis | Redis面試題(2021最新版) | 持續更新中! |
7 | Spring MVC | Spring MVC面試題(2021最新版) | 持續更新中! |
8 | Spring Cloud | Spring Cloud面試題(2021最新版) | 持續更新中! |
9 | MySQL優化 | MySQL優化面試題(2021最新版) | 持續更新中! |
10 | JVM | JVM性能調優面試題(2021最新版) | 持續更新中! |
11 | Linux | Linux面試題(2021最新版) | 持續更新中! |
12 | Mybatis | Mybatis面試題(2021最新版) | 持續更新中! |
13 | 網絡編程 | TCP,UDP,Socket,Http網絡編程面試題(2021最新版) | 持續更新中! |
14 | 設計模式 | 設計模式面試題(2021最新版) | 持續更新中! |
15 | 大數據 | 大數據面試題100道(2021最新版) | 持續更新中! |
16 | Tomcat | Tomcat面試題(2021最新版) | 持續更新中! |
17 | 多線程 | 多線程面試題(2021最新版) | 持續更新中! |
18 | Nginx | Nginx_BIO_NIO_AIO面試題(2021最新版) | 持續更新中! |
19 | memcache | memcache面試題(2021最新版) | 持續更新中! |
20 | java異常 | java異常面試題(2021最新版) | 持續更新中! |
21 | Java虛擬機 | Java虛擬機面試題(2021最新版) | 持續更新中! |
22 | Java集合 | Java集合面試題(2021最新版) | 持續更新中! |
23 | Git經常使用命令 | Git經常使用命令(2021最新版) | 持續更新中! |
24 | Elasticsearch | Elasticsearch面試題(2021最新版) | 持續更新中! |
25 | Dubbo | Dubbo面試題(2021最新版) | 持續更新中! |
Redis 是一個使用 C 語言寫成的,開源的高性能key-value非關係緩存數據庫。它支持存儲的value 類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希類型)。Redis的數據都基於緩存的,因此很快,每秒能夠處理超過 10萬次讀寫操做,是已知性能最快的Key-Value DB。Redis也能夠實現數據寫入磁盤中,保證了數據的安全不丟 失,並且Redis的操做是原子性的。redis
Redis主要有5種數據類型,包括String,List,Set,Zset,Hash,知足大部分的使用要求算法
(1) 速度快,由於數據存在內存中,相似於HashMap,HashMap的優點就是查找和操做的時間復 數據庫
雜度都很低 編程
(2)支持豐富數據類型,支持string,list,set,sorted set,hash 後端
(3) 支持事務,操做都是原子性,所謂的原子性就是對數據的更改要麼所有執行,要麼所有不執行 設計模式
(4) 豐富的特性:可用於緩存,消息,按key設置過時時間,過時後將會自動刪除 緩存
一、存儲方式 Memecache 把數據所有存在內存之中, 斷電後會掛掉, 數據不能超過內存大小。 Redis有部份存在硬盤上, 這樣能保證數據的持久性
二、數據支持類型 Memcache 對數據類型支持相對簡單。 Redis 有複雜的數據類型。
三、使用底層模型不一樣 它們之間底層實現方式 以及與客戶端之間通訊的應用協議不同。 Redis 直接本身構建了 VM 機制 ,由於通常的系統調用系統函數的話, 會浪費必定的時間去移動和請求。
Redis 提供兩種持久化機制 RDB(默認) 和 AOF 機制:
RDB:是Redis DataBase縮寫快照
優勢:
缺點:
AOF:持久化:
優勢:
缺點:
倆種持久化的優缺點是什麼?
答:
1) 事務是一個單獨的隔離操做: 事務中的全部命令都會序列化、按順序地執行。事務在執行的過程當中, 不會被其餘客戶端發送來的命令請求所打斷。
2) 事務是一個原子操做: 事務中的命令要麼所有被執行, 要麼所有都不執行。
答: 一個客戶端運行了新的命令, 添加了新的數據。Redi 檢查內存使用狀況, 若是大於 maxmemory的限制, 則根據設定好的策略進行回收。一個新的命令被執行, 等等。因此咱們不斷地穿越內存限制的邊界, 經過不斷達到邊界而後不斷地回收回到邊界如下。若是一個命令的結果致使大量內存被使用(例如很大的集合的交集保存到一個新的鍵), 不用多久內存限制就會被這個內存使用量超越。
一、會話緩存( Session Cache)
最經常使用的一種使用 Redis 的情景是會話緩存( session cache)。用 Redis 緩存會話比其餘存儲( 如Memcached)的優點在於:Redis 提供持久化。當維護一個不是嚴格要求一致性的緩存時, 若是用戶的購物車信息所有丟失, 大部分人都會不高興的, 如今, 他們還會這樣嗎? 幸運的是, 隨着 Redis這些年的改進, 很容易找到怎麼恰當的使用 Redis 來緩存會話的文檔。甚至廣爲人知的商業平臺Magento 也提供 Redis 的插件。
二、全頁緩存( FPC)
除基本的會話 token 以外, Redis 還提供很簡便的 FPC 平臺。回到一致性問題, 即便重啓了 Redis 實例, 由於有磁盤的持久化, 用戶也不會看到頁面加載速度的降低,這是一個極大改進,相似 PHP 本地FPC。 再次以 Magento 爲例,Magento 提供一個插件來使用 Redis 做爲全頁緩存後端。 此外, 對WordPress 的用戶來講, Pantheon 有一個很是好的插件 wp-redis, 這個插件能幫助你以最快速度加載你曾瀏覽過的頁面。
三、隊列
Reids 在內存存儲引擎領域的一大優勢是提供 list 和 set 操做, 這使得 Redis 能做爲一個很好的消息隊列平臺來使用。Redis 做爲隊列使用的操做,就相似於本地程序語言( 如 Python)對 list 的 push/pop操做。 若是你快速的在 Google 中搜索「 Redis queues」, 你立刻就能找到大量的開源項目, 這些項目的目的就是利用 Redis 建立很是好的後端工具, 以知足各類隊列需求。例如, Celery 有一個後臺就是使用 Redis 做爲 broker, 你能夠從這裏去查看。
4, 排行榜/計數器
Redis 在內存中對數字進行遞增或遞減的操做實現的很是好。集合( Set) 和有序集合( Sorted Set)也使得咱們在執行這些操做的時候變的很是簡單,Redis 只是正好提供了這兩種數據結構。因此, 咱們要從排序集合中獲取到排名最靠前的 10 個用戶– 咱們稱之爲「 user_scores」, 咱們只須要像下面同樣執行便可: 固然,這是假定你是根據你用戶的分數作遞增的排序。若是你想返回用戶及用戶的分數,你須要這樣執行: ZRANGEuser_scores 0 10 WITHSCORES Agora Games 就是一個很好的例子, 用Ruby 實現的, 它的排行榜就是使用 Redis 來存儲數據的, 你能夠在這裏看到。
五、發佈/訂閱
最後( 但確定不是最不重要的)是 Redis 的發佈/訂閱功能。發佈/訂閱的使用場景確實很是多。我已看見人們在社交網絡鏈接中使用, 還可做爲基於發佈/訂閱的腳本觸發器, 甚至用 Redis 的發佈/訂閱功能來創建聊天系統!
(1) Master 最好不要作任何持久化工做,如 RDB 內存快照和 AOF 日誌文件
(2) 若是數據比較重要,某個 Slave 開啓 AOF 備份數據,策略設置爲每秒同步一次
(3) 爲了主從複製的速度和鏈接的穩定性,Master 和 Slave 最好在同一個局域網內
(4) 儘可能避免在壓力很大的主庫上增長從庫
(5) 主從複製不要用圖狀結構,用單向鏈表結構更爲穩定,即:Master <- Slave1 <- Slave2 <- Slave3...
這樣的結構方便解決單點故障問題,實現 Slave 對 Master 的替換。若是 Master 掛了,能夠馬上啓用 Slave1 作 Master,其餘不變。
小編分享的文章到這裏就結束了,整理不易,歡迎你們一塊兒交流,喜歡小編分享的文章記得關注我點贊喲,感謝支持!