以下是 Redis 常見的八道面試題:
Redis 支持的數(shù)據(jù)結(jié)構(gòu)有哪些?
Redis 是如何實現(xiàn)持久化的?
Redis 如何實現(xiàn)分布式鎖?
Redis 如何處理并發(fā)請求?
Redis 的過期鍵的刪除策略是什么?
Redis 的主從同步原理是什么?
Redis 如何實現(xiàn)高可用?
Redis 的內(nèi)存淘汰策略有哪些?
這些問題涵蓋了 Redis 的基本概念、原理、應(yīng)用和優(yōu)化等方面,是 Redis 面試中經(jīng)常出現(xiàn)的問題。
Redis是一個開源的使用ANSI C語言支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。redis的默認端口號是6379。
6379在是手機按鍵上MERZ對應(yīng)的號碼,而MERZ取自意大利歌女Alessia Merz的名字。MERZ長期以來被Redis作者antirez及其朋友當(dāng)作愚蠢的代名詞。后來Redis作者在開發(fā)Redis時就選用了這個端口。
Redis是一個開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。從2013年5月開始,Redis的開發(fā)由Pivotal贊助。
Redis注解:
@RedisHash("persons"):用于指定操作實體類對象在Redis數(shù)據(jù)庫中的存儲空間,此處表示針對Person實體類的數(shù)據(jù)操作都存儲在Redis數(shù)據(jù)庫中名為persons的存儲空間下。
@Id:用于標(biāo)識實體類主鍵。在Redis數(shù)據(jù)庫中會默認生成字符串形式的HashKey表示唯一的實體對象id,當(dāng)然也可以在數(shù)據(jù)存儲時手動指定id。
@Indexed:用于標(biāo)識對應(yīng)屬性在Redis數(shù)據(jù)庫中生成二級索引。使用該注解后會在數(shù)據(jù)庫中生成屬性對應(yīng)的二級索引,索引名稱就是屬性名,可以方便地進行數(shù)據(jù)查詢。
zookeeper和redis有很多不同之處:
(1)功能上:zookeeper是一個分布式的,強一致性的配置管理和協(xié)調(diào)服務(wù)系統(tǒng),可以在一個分布式的集群環(huán)境中應(yīng)用;而redis是一個開源的,高性能的,基于內(nèi)存的key-value數(shù)據(jù)庫,它通常用于緩存數(shù)據(jù),提供存儲服務(wù)。
(2)數(shù)據(jù)模型上:zookeeper支持鍵值對數(shù)據(jù)模型,其存儲的節(jié)點可以是一個臨時節(jié)點或永久節(jié)點;而redis支持五種數(shù)據(jù)結(jié)構(gòu),包括字符串、哈希、列表、集合和有序集合。
(3)持久性:zookeeper在提供服務(wù)時可以提供持久性,而redis數(shù)據(jù)不持久,如果宕機則會丟失數(shù)據(jù)。內(nèi)存的數(shù)據(jù)可以持久化到磁盤上,但是需要開發(fā)者自己來實現(xiàn)。
(4)速度:zookeeper的讀寫速度較慢,而redis的讀寫速度非???,一般來說,在大部分場景下,redis都可以支持實時讀寫操作
Redis是一款基于內(nèi)存的高性能鍵值存儲系統(tǒng),具有以下主要功能:1. 快速存儲和檢索:Redis將數(shù)據(jù)存儲在內(nèi)存中,因此具有快速的讀寫性能。它支持多種數(shù)據(jù)結(jié)構(gòu)和操作,包括字符串、列表、集合、有序集合和哈希表等。2. 緩存:Redis可以用作緩存系統(tǒng),可以將常用的數(shù)據(jù)存儲在內(nèi)存中,以提高訪問速度,并減少對后端存儲系統(tǒng)的壓力。3. 發(fā)布/訂閱:Redis支持發(fā)布/訂閱模式,允許多個客戶端訂閱指定的頻道,當(dāng)有新消息發(fā)布到頻道時,訂閱者將立即接收到通知。4. 持久化:Redis支持持久化,可以將數(shù)據(jù)保存到硬盤上,以保證數(shù)據(jù)在重啟后的持久性。5. 事務(wù)支持:Redis支持事務(wù),可以將多個操作打包在一個事務(wù)中,并保證這些操作的原子性。6. 分布式:Redis可以通過分片和復(fù)制功能實現(xiàn)數(shù)據(jù)的水平擴展和高可用性??梢詫?shù)據(jù)分布在多個節(jié)點上進行處理,并進行數(shù)據(jù)備份和故障轉(zhuǎn)移。7. 數(shù)據(jù)過期:Redis支持為數(shù)據(jù)設(shè)置過期時間,在數(shù)據(jù)到期后會自動刪除,可以用于實現(xiàn)緩存過期和數(shù)據(jù)自動清理等功能??偟膩碚f,Redis是一個功能強大的鍵值存儲系統(tǒng),可以用于各種應(yīng)用場景,包括緩存、消息隊列、任務(wù)隊列、計數(shù)器和排行榜等。
Redis(Remote Dictionary Server ),即遠程字典服務(wù),是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。從2013年5月開始,Redis的開發(fā)由Pivotal贊助。
中文名
遠程字典服務(wù)
外文名
Remote Dictionary Server
簡稱
Redis
分類
數(shù)據(jù)庫
相關(guān)
NoSql 數(shù)據(jù)存儲
Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點:Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進行使用。Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。Redis 優(yōu)勢性能極高 ?C Redis能讀的速度是110000次/s,寫的速度是81000次/s 。豐富的數(shù)據(jù)類型 ?C Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作。原子 ?C Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。豐富的特性 ?C Redis還支持 publish/subscribe, 通知, key 過期等等特性。
token存儲在redis中,設(shè)置了過期時間,過期就過期了 ,不需要去刷新token,
token過期后,客戶端可以依據(jù)refreshtoken來獲取新的token。
Redis HashMap原理是把HashMap中的每個鍵值對用一個字符串來表示。既然每個鍵值對都用一個字符串表示,我們就可以使用Redis的HSET/HGET/HMGET等命令來控制它們,從而實現(xiàn)對hashmap的操作,比如添加/刪除鍵值對(HSET/HGET);更新值(HDEL/HINCR);查詢值(HMGET/HMGETALL)等等。