欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

壓箱底的干貨!干貨!——Redis面試系列(一)

一、什么是 redis?
Redis(Remote Dictionary Server) 是一個使用 C 語言編寫的,開源的(BSD許可)高性能非關(guān)系型(NOSQL)的鍵值對數(shù)據(jù)庫,可以存儲鍵和五種不同類型的值之間的映射。鍵的類型只能為字符串,值支持五種數(shù)據(jù)類型:字符串、列表、集合、散列表、有序集合。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的芒市網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

與傳統(tǒng)數(shù)據(jù)庫不同的是 Redis 的數(shù)據(jù)是存在內(nèi)存中的,所以讀寫速度非常快,因此 redis 被廣泛應(yīng)用于緩存方向,每秒可以處理超過 10萬次讀寫操作,是已知性能最快的Key-Value DB。另外,Redis 也經(jīng)常用來做分布式鎖。除此之外,Redis 支持事務(wù) 、持久化、LUA腳本、LRU驅(qū)動事件、多種集群方案。

Redis 是完全開源免費(fèi)的,遵守 BSD 協(xié)議,是一個高性能的 key-value 數(shù)據(jù)庫。

二、Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點(diǎn):
(1)Redis 支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進(jìn)行使用。

(2)Redis 不僅僅支持簡單的 key-value 類型的數(shù)據(jù),同時還提供 list,set,zset,hash 等數(shù)據(jù)結(jié)構(gòu)的存儲。

(3)Redis 支持?jǐn)?shù)據(jù)的備份,即 master-slave 模式的數(shù)據(jù)備份。

三、Redis有哪些優(yōu)缺點(diǎn)
優(yōu)點(diǎn)

(1)性能極高 – Redis 能讀的速度是 110000 次/s,寫的速度是 81000 次/s 。

(2)豐富的數(shù)據(jù)類型 – Redis 支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 數(shù)據(jù)類型操作。

(3)原子 – Redis 的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個操作是原子性的。多個操作也支持事務(wù),即原子性,通過 MULTI 和 EXEC指令包起來。

(4)豐富的特性 – Redis 還支持 publish/subscribe, 通知, key 過期等等特性。

讀寫性能優(yōu)異, 支持?jǐn)?shù)據(jù)持久化,支持AOF和RDB兩種持久化方式。支持事務(wù),Redis的所有操作都是原子性的,同時Redis還支持對幾個操作合并后的原子性執(zhí)行。數(shù)據(jù)結(jié)構(gòu)豐富,除了支持string類型的value外還支持hash、set、zset、list等數(shù)據(jù)結(jié)構(gòu)。支持主從復(fù)制,主機(jī)會自動將數(shù)據(jù)同步到從機(jī),可以進(jìn)行讀寫分離。

缺點(diǎn)

數(shù)據(jù)庫容量受到物理內(nèi)存的限制,不能用作海量數(shù)據(jù)的高性能讀寫,因此Redis適合的場景主要局限在較小數(shù)據(jù)量的高性能操作和運(yùn)算上。

Redis 不具備自動容錯和恢復(fù)功能,主機(jī)從機(jī)的宕機(jī)都會導(dǎo)致前端部分讀寫請求失敗,需要等待機(jī)器重啟或者手動切換前端的IP才能恢復(fù)。

主機(jī)宕機(jī),宕機(jī)前有部分?jǐn)?shù)據(jù)未能及時同步到從機(jī),切換IP后還會引入數(shù)據(jù)不一致的問題,降低了系統(tǒng)的可用性。

Redis 較難支持在線擴(kuò)容,在集群容量達(dá)到上限時在線擴(kuò)容會變得很復(fù)雜。為避免這一問題,運(yùn)維人員在系統(tǒng)上線時必須確保有足夠的空間,這對資源造成了很大的浪費(fèi)。

四、Redis 與其他 key-value 存儲有什么不同?
(1)Redis 有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對他們的原子性操作,這是一個不同于其他數(shù)據(jù)庫的進(jìn)化路徑。Redis 的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進(jìn)行額外的抽象。

(2)Redis 運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進(jìn)行高速讀寫時需要權(quán)衡內(nèi)存,因為數(shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點(diǎn)是,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣 Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因為他們并不需要進(jìn)行隨機(jī)訪問。

五、Redis 的數(shù)據(jù)類型?
Redis 支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及 zsetsorted set:有序集合)。

我們實(shí)際項目中比較常用的是 string,hash 如果你是 Redis 中高級用戶,還需要加上下面幾種數(shù)據(jù)結(jié)構(gòu) HyperLogLog、Geo、Pub/Sub。

如果你說還玩過 Redis Module,像 BloomFilter,RedisSearch,Redis-ML,面試官得眼睛就開始發(fā)亮了。

六、使用 Redis 有哪些好處?
(1)速度快,因為數(shù)據(jù)存在內(nèi)存中,類似于 HashMap,HashMap 的優(yōu)勢

(2)支持豐富數(shù)據(jù)類型,支持 string,list,set,Zset,hash 等

(3)支持事務(wù),操作都是原子性,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行

(4)豐富的特性:可用于緩存,消息,按 key 設(shè)置過期時間,過期后將會自動刪除

七、Redis 相比 Memcached 有哪些優(yōu)勢?
(1)Memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數(shù)據(jù)類

(2)Redis 的速度比 Memcached 快很

(3)Redis 可以持久化其數(shù)據(jù)

八、Memcache 與 Redis 的區(qū)別都有哪些?
(1)存儲方式 Memecache 把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會掛掉,數(shù)據(jù)不能超過內(nèi)存大小。 Redis 有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。

(2)數(shù)據(jù)支持類型 Memcache 對數(shù)據(jù)類型支持相對簡單。 Redis 有復(fù)雜的數(shù)據(jù)類型。

(3)使用底層模型不同 它們之間底層實(shí)現(xiàn)方式 以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。 Redis 直接自己構(gòu)建了 VM 機(jī)制 ,因為一般的系統(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會浪費(fèi)一定的時間去移動和請求。

九、一個字符串類型的值能存儲最大容量是多少?
512M

十、Redis 的持久化機(jī)制是什么?各自的優(yōu)缺點(diǎn)?
Redis提供兩種持久化機(jī)制 RDB 和 AOF 機(jī)制:

RDBRedis DataBase)持久化方式:

是指用數(shù)據(jù)集快照的方式半持久化模式)記錄 redis 數(shù)據(jù)庫的所有鍵值對,在某個時間點(diǎn)將數(shù)據(jù)寫入一個臨時文件,持久化結(jié)束后,用這個臨時文件替換上次持久化的文件,達(dá)到數(shù)據(jù)恢復(fù)。

優(yōu)點(diǎn):

(1)只有一個文件 dump.rdb,方便持久化。

(2)容災(zāi)性好,一個文件可以保存到安全的磁盤。

(3)性能最大化,fork 子進(jìn)程來完成寫操作,讓主進(jìn)程繼續(xù)處理命令,所以是 IO最大化。使用單獨(dú)子進(jìn)程來進(jìn)行持久化,主進(jìn)程不會進(jìn)行任何 IO 操作,保證了 redis的高性能)

(4)相對于數(shù)據(jù)集大時,比 AOF 的啟動效率更高。

缺點(diǎn):

數(shù)據(jù)安全性低。RDB 是間隔一段時間進(jìn)行持久化,如果持久化之間 redis 發(fā)生故障,會發(fā)生數(shù)據(jù)丟失。所以這種方式更適合數(shù)據(jù)要求不嚴(yán)謹(jǐn)?shù)臅r候

AOFAppend-only file)持久化方式:

是指所有的命令行記錄以 redis 命令請求協(xié)議的格式完全持久化存儲)保存為 aof 文件。

優(yōu)點(diǎn):

(1)數(shù)據(jù)安全,aof 持久化可以配置 appendfsync 屬性,有 always,每進(jìn)行一次命令操作就記錄到 aof 文件中一次。

(2)通過 append 模式寫文件,即使中途服務(wù)器宕機(jī),可以通過 redis-check-aof工具解決數(shù)據(jù)一致性問題。

(3)AOF 機(jī)制的 rewrite 模式。AOF 文件沒被 rewrite 之前(文件過大時會對命令進(jìn)行合并重寫),可以刪除其中的某些命令(比如誤操作的 flushall))

缺點(diǎn):

(1)AOF 文件比 RDB 文件大,且恢復(fù)速度慢。

(2)數(shù)據(jù)集大的時候,比 rdb 啟動效率低。

十一、Redis 常見性能問題和解決方案:
(1)Master 最好不要寫內(nèi)存快照,如果 Master 寫內(nèi)存快照,save 命令調(diào)度 rdbSave函數(shù),會阻塞主線程的工作,當(dāng)快照比較大時對性能影響是非常大的,會間斷性暫停服務(wù)

(2)如果數(shù)據(jù)比較重要,某個 Slave 開啟 AOF 備份數(shù)據(jù),策略設(shè)置為每秒同步一

(3)為了主從復(fù)制的速度和連接的穩(wěn)定性,Master 和 Slave 最好在同一個局域網(wǎng)

(4)盡量避免在壓力很大的主庫上增加從

(5)主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即:Master <- Slave1<- Slave2 <- Slave3…這樣的結(jié)構(gòu)方便解決單點(diǎn)故障問題,實(shí)現(xiàn) Slave 對 Master的替換。如果 Master 掛了,可以立刻啟用 Slave1 做 Master,其他不變。

十二、redis 過期鍵的刪除策略?
(1)定時刪除:在設(shè)置鍵的過期時間的同時,創(chuàng)建一個定時器 timer). 讓定時器在鍵的過期時間來臨時,立即執(zhí)行對鍵的刪除操作。

(2)惰性刪除:放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,如果過期的話,就刪除該鍵;如果沒有過期,就返回該鍵。

(3)定期刪除:每隔一段時間程序就對數(shù)據(jù)庫進(jìn)行一次檢查,刪除里面的過期鍵。至于要刪除多少過期鍵,以及要檢查多少個數(shù)據(jù)庫,則由算法決定。

十三、為什么 edis 需要把所有數(shù)據(jù)放到內(nèi)存中?
Redis 為了達(dá)到最快的讀寫速度將數(shù)據(jù)都讀到內(nèi)存中,并通過異步的方式將數(shù)據(jù)寫入磁盤。所以 redis 具有快速和數(shù)據(jù)持久化的特征。如果不將數(shù)據(jù)放在內(nèi)存中,磁盤 I/O 速度為嚴(yán)重影響 redis 的性能。在內(nèi)存越來越便宜的今天,redis 將會越來越受歡迎。如果設(shè)置了最大使用的內(nèi)存,則數(shù)據(jù)已有記錄數(shù)達(dá)到內(nèi)存限值后不能繼續(xù)插入新值。

十四、Redis 的同步機(jī)制了解么?
Redis 可以使用主從同步,從從同步。第一次同步時,主節(jié)點(diǎn)做一次 bgsave,并同時將后續(xù)修改操作記錄到內(nèi)存 buffer,待完成后將 rdb 文件全量同步到復(fù)制節(jié)點(diǎn),復(fù)制節(jié)點(diǎn)接受完成后將 rdb 鏡像加載到內(nèi)存。加載完成后,再通知主節(jié)點(diǎn)將期間修改的操作記錄同步到復(fù)制節(jié)點(diǎn)進(jìn)行重放就完成了同步過程。

十五、Pipeline 有什么好處,為什么要用 pipeline?
可以將多次 IO 往返的時間縮減為一次,前提是 pipeline 執(zhí)行的指令之間沒有因果相關(guān)性。使用 redis-benchmark 進(jìn)行壓測的時候可以發(fā)現(xiàn)影響 redis 的 QPS峰值的一個重要因素是 pipeline 批次指令的數(shù)目。

十六、是否使用過 Redis 集群,集群的原理是什么?
(1)Redis Sentinal 著眼于高可用,在 master 宕機(jī)時會自動將 slave 提升為master,繼續(xù)提供服務(wù)。

(2)Redis Cluster 著眼于擴(kuò)展性,在單個 redis 內(nèi)存不足時,使用 Cluster 進(jìn)行分片存儲。

十七、Redis 集群方案什么情況下會導(dǎo)致整個集群不可用?
有 A,B,C 三個節(jié)點(diǎn)的集群,在沒有復(fù)制模型的情況下,如果節(jié)點(diǎn) B 失敗了,那么整個集群就會以為缺少 5501-11000 這個范圍的槽而不可用。

十八、Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
Redisson、Jedis、lettuce 等等,官方推薦使用 Redisson。

十九、Jedis 與 Redisson 對比有什么優(yōu)缺點(diǎn)?
Jedis 是 Redis 的 Java 實(shí)現(xiàn)的客戶端,其 API 提供了比較全面的 Redis 命令的支持;Redisson 實(shí)現(xiàn)了分布式和可擴(kuò)展的 Java 數(shù)據(jù)結(jié)構(gòu),和 Jedis 相比,功能較為簡單,不支持字符串操作,不支持排序、事務(wù)、管道、分區(qū)等 Redis 特性。Redsson 的宗旨是促進(jìn)使用者對 Redis 的關(guān)注分離,從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。

二十、Redis 如何設(shè)置密碼及驗證密碼?
設(shè)置密碼:config set requirepass 123456

授權(quán)密碼:auth 123456

二十一、說說 Redis 哈希槽的概念?
Redis 集群沒有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有16384 個哈希槽,每個 key 通過 CRC16 校驗后對 16384 取模來決定放置哪個槽,集群的每個節(jié)點(diǎn)負(fù)責(zé)一部分 hash 槽。

二十二、Redis 集群的主從復(fù)制模型是怎樣的?
為了使在部分節(jié)點(diǎn)失敗或者大部分節(jié)點(diǎn)無法通信的情況下集群仍然可用,所以集群使用了主從復(fù)制模型,每個節(jié)點(diǎn)都會有 N-1 個復(fù)制品.

二十三、Redis 集群會有寫操作丟失嗎?為什么?
Redis 并不能保證數(shù)據(jù)的強(qiáng)一致性,這意味這在實(shí)際中集群在特定的條件下可能會丟失寫操作。

二十四、Redis 集群之間是如何復(fù)制的?
異步復(fù)制

二十五、Redis 集群最大節(jié)點(diǎn)個數(shù)是多少?
16384 個。

二十六、Redis 集群如何選擇數(shù)據(jù)庫?
Redis 集群目前無法做數(shù)據(jù)庫選擇,默認(rèn)在 0 數(shù)據(jù)庫。

二十七、怎么測試 Redis 的連通性?
使用 ping 命令。

二十八、怎么理解 Redis 事務(wù)?
(1)事務(wù)是一個單獨(dú)的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷。

(2)事務(wù)是一個原子操作:事務(wù)中的命令要么全部被執(zhí)行,要么全部都不執(zhí)行。

二十九、Redis 事務(wù)相關(guān)的命令有哪幾個?
MULTI、EXEC、DISCARD、WATCH

三十、Redis key 的過期時間和永久有效分別怎么設(shè)置?
EXPIRE 和 PERSIST 命令。

篇幅有限,更多面試資料需要請獲?。?/p>

QQ獲取
點(diǎn)擊鏈接加入群聊【java架構(gòu)學(xué)習(xí)交流群】:https://jq.qq.com/?_wv=1027&k=5Gxc9ic
不常用QQ的小伙伴可以微信獲取(記得備注一下加群渠道哦~)
賬號:13272413561

分享文章:壓箱底的干貨!干貨!——Redis面試系列(一)
分享地址:http://aaarwkj.com/article44/igjche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站改版、建站公司關(guān)鍵詞優(yōu)化、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
日本欧美一区二区精品| 欧美日韩亚洲精品瑜伽裤| 中文字幕在线一区国产精品| 国产精品黄色片在线观看| 国产熟女一区二区三区正在| 国产婷婷色三区一区二区| 成人黄色av免费看| 日本中文字幕免费一区| 色综合色狠狠天天综合色| 91国产精品视频在线| 日韩精品一区二区视频| 亚欧乱色熟女一区二区三区| 亚洲精品熟女一区二区三区| 日韩美女av在线播放| 久久中文字幕一区二区三区| 看夫妻性生活免费视频| 精品人妻日韩中文字幕| 久久蜜臀av一区三区| 九九热99这里有精品| 亚洲熟妇av乱码在线| heyzo高清中文字幕在线| 日韩国产精品亚洲欧美在线| 狠狠综爱五月天的婷婷| 日本一区二区三区不卡在线| 国产一区二区传媒视频| 成年人三级黄色片视频| 亚洲一区二区日韩在线| 午夜性色福利在线播放| 日韩中文字幕在线乱码| 亚洲熟女乱妇爽到高潮| 国产精品一区二区av麻豆| 日韩国产欧美亚洲一区| 欧美激情韩国三级日本| 国产精品日韩理论在线| 国产一区二区三区百合| 五月天色婷婷亚洲综合一区| 黄色av一本二本在线观看| 日韩精品在线观看一| 国产日产精品一区二区三区四区| 97视频免费观看在线| 东京一区二区三区四区黄片|