金九銀十跳槽高峯,面試必備之 Redis + MongoDB 常問80道面試題

前言

有着「金九銀十」之稱的招聘旺季已經開啓,跳槽高峯期也如約而至。mysql

本文爲主要是 Redis + MongoDB 知識點的攻略,但願能幫助到你們。面試

內容較多,你們準備好耐心和瓜子礦泉水。redis

Redis

redis 和 memcached 什麼區別?爲何高併發下有時單線程的 redis 比多線程的sql

memcached 效率要高?數據庫

區別:緩存

1.mc 可緩存圖片和視頻。rd 支持除 k/v 更多的數據結構;數據結構

2.rd 可使用虛擬內存,rd 可持久化和 aof 災難恢復,rd 經過主從支持數據備份;多線程

3.rd 能夠作消息隊列。併發

緣由:mc 多線程模型引入了緩存一致性和鎖,加鎖帶來了性能損耗。memcached

redis 主從複製如何實現的?redis 的集羣模式如何實現?redis 的 key 是如何尋址的?

主從複製實現:主節點將本身內存中的數據作一份快照,將快照發給從節點,從節點將數

據恢復到內存中。以後再每次增長新數據的時候,主節點以相似於 mysql 的二進制日誌方

式將語句發送給從節點,從節點拿到主節點發送過來的語句進行重放。

分片方式:

-客戶端分片

-基於代理的分片

● Twemproxy

● codis

-路由查詢分片

● Redis-cluster(自己提供了自動將數據分散到 Redis Cluster 不一樣節點的能力,整個數據集

合的某個數據子集存儲在哪一個節點對於用戶來講是透明的)

redis-cluster 分片原理:Cluster 中有一個 16384 長度的槽(虛擬槽),編號分別爲 0-16383。

每一個 Master 節點都會負責一部分的槽,當有某個 key 被映射到某個 Master 負責的槽,那

麼這個 Master 負責爲這個 key 提供服務,至於哪一個 Master 節點負責哪一個槽,能夠由用戶

指定,也能夠在初始化的時候自動生成,只有 Master 才擁有槽的全部權。Master 節點維

護着一個 16384/8 字節的位序列,Master 節點用 bit 來標識對於某個槽本身是否擁有。比

如對於編號爲 1 的槽,Master 只要判斷序列的第二位(索引從 0 開始)是否是爲 1 便可。

這種結構很容易添加或者刪除節點。好比若是我想新添加個節點 D, 我須要從節點 A、B、

C 中得部分槽到 D 上。 (篇幅過大因此只列舉幾點,面試題+答案領取方式在文末)

MongoDB

你說的 NoSQL 數據庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?爲何要使用和不使用

NoSQL 數據庫?說一說 NoSQL 數據庫的幾個優勢?

NoSQL 是非關係型數據庫,NoSQL = Not Only SQL。

關係型數據庫採用的結構化的數據,NoSQL 採用的是鍵值對的方式存儲數據。

在處理非結構化/半結構化的大數據時;在水平方向上進行擴展時;隨時應對動態增長的數據項時能夠優

先考慮使用 NoSQL 數據庫。

在考慮數據庫的成熟度;支持;分析和商業智能;管理及專業性等問題時,應優先考慮關係型數據庫。

NoSQL 數據庫有哪些類型?

NoSQL 數據庫的類型

例如:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase,

MemcacheDB, RevenDB and Voldemort are the examples of NoSQL databases.詳細閱讀。

MySQL 與 MongoDB 之間最基本的差異是什麼?

MySQL 和 MongoDB 二者都是免費開源的數據庫。MySQL 和 MongoDB 有許多基本差異包括數據的表

示(data representation),查詢,關係,事務,schema 的設計和定義,標準化(normalization),速度

和性能。

經過比較 MySQL 和 MongoDB,實際上咱們是在比較關係型和非關係型數據庫,即數據存儲結構不一樣。

Redis+MongoDB 80題答案PDF

金九銀十跳槽高峯,面試必備之 Redis + MongoDB 常問80道面試題答案傳送門

相關文章
相關標籤/搜索