大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁 > Redis面試題

Redis數(shù)據(jù)結(jié)構(gòu)面試題

001什么是布隆過濾器?

布隆過濾器是一個(gè)叫“布隆”的人提出的,它本身是一個(gè)很長的二進(jìn)制向量,既然是二進(jìn)制的向量,那么顯而易見的,存放的不是0,就是1。布隆過濾器是一種由位數(shù)組和多個(gè)哈希函數(shù)組成概率數(shù)據(jù)結(jié)構(gòu),返回兩種結(jié)果可能存在和一定不存在。布隆過濾器里的一個(gè)元素由多個(gè)狀態(tài)值共同確定。位數(shù)組存儲(chǔ)狀態(tài)值,哈希函數(shù)計(jì)算狀態(tài)值的位置。
優(yōu)點(diǎn):由于存放的不是完整的數(shù)據(jù),所以占用的內(nèi)存很少,而且新增,查詢速度夠快;
缺點(diǎn): 隨著數(shù)據(jù)的增加,誤判率隨之增加;無法做到刪除數(shù)據(jù);只能判斷數(shù)據(jù)是否一定不存在,而無法判斷數(shù)據(jù)是否一定存在。

002Redis中String常用命令及應(yīng)用場景。

常用命令:  set,get,decr,incr,mget 等。
含義:String數(shù)據(jù)結(jié)構(gòu)是簡單的Key-Value類型,value不僅可以是String,也可以是數(shù)字。
數(shù)據(jù)結(jié)構(gòu):內(nèi)部結(jié)構(gòu)實(shí)現(xiàn)上類似于 Java 的 ArrayList,采用預(yù)分配冗余空間的方式來減少內(nèi)存的頻繁分配,如圖所示:

len 是當(dāng)前字符串實(shí)際長度,capacity 是為字符串分配的可用空間,當(dāng)字符串長度小于 1M 時(shí),擴(kuò)容都是加倍現(xiàn)有的空間,如果超過 1M,擴(kuò)容時(shí)一次只會(huì)多擴(kuò) 1M 的空間。字符串最大長度為 512M。
應(yīng)用場景: 常規(guī)計(jì)數(shù),微博數(shù),粉絲數(shù)等。

003Redis中Hash常用命令及應(yīng)用場景。

常用命令: hget,hset,hgetall 等。
含義:Redis中的哈希結(jié)構(gòu)就如同Java中的map一樣,Hash是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對象。
數(shù)據(jù)結(jié)構(gòu):Redis Hash通過分桶的方式解決 hash 沖突。它是無序字典。內(nèi)部實(shí)現(xiàn)結(jié)構(gòu)是同樣的數(shù)組 + 鏈表二維結(jié)構(gòu)。第一維 hash 的數(shù)組位置碰撞時(shí),就會(huì)將碰撞的元素使用鏈表串接起來。第一維是數(shù)組,第二維是鏈表。數(shù)組中存儲(chǔ)的是第二維鏈表的第一個(gè)元素的指針。


應(yīng)用場景:存儲(chǔ)用戶信息,商品信息等等。例如修真院的首頁的職業(yè)信息,只是簡單的信息集合,我們可以直接將它儲(chǔ)存到Redis中,在讀取的過程中就不用序列化對象,直接操作。

004Redis中List常用命令及應(yīng)用場景。

常用命令: lpush,rpush,lpop,rpop,lrange等
含義:list就是鏈表,Redis list的實(shí)現(xiàn)為一個(gè)雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內(nèi)存開銷。
數(shù)據(jù)結(jié)構(gòu):Redis 的列表相當(dāng)于 Java 語言中的 LinkedList,注意它是鏈表而不是數(shù)組。這意味著 list 的插入和刪除操作非常快,時(shí)間復(fù)雜度為 O(1),但是索引定位很慢,時(shí)間復(fù)雜度為 O(n)。
list的特點(diǎn)是:
1)有序
2)可以重復(fù)
3)右邊進(jìn)左邊出或者左邊進(jìn)右邊出,則列表可以充當(dāng)隊(duì)列
4)左邊進(jìn)左邊出或者右邊進(jìn)右邊出,則列表可以充當(dāng)棧

應(yīng)用場景:微博的關(guān)注列表,粉絲列表,最新消息排行等功能

005Redis中Set常用命令及應(yīng)用場景。

常用命令:sadd,spop,smembers,sunion 等
含義:set對外提供的功能與list類似,是一個(gè)列表的功能,特殊之處在于set是可以自動(dòng)排重的。 并且set提供了判斷某個(gè)成員是否在一個(gè)set集合內(nèi)的重要接口,這個(gè)也是list所不能提供的。
數(shù)據(jù)結(jié)構(gòu):set和字典非常類似,其內(nèi)部實(shí)現(xiàn)就是上述的hashTable的特殊實(shí)現(xiàn),與字典不同的地方有兩點(diǎn):
1)只關(guān)注key值,所有的value都是NULL。
2)在新增數(shù)據(jù)時(shí)會(huì)進(jìn)行去重。


場景應(yīng)用:
1.共同好友、二度好友
2.利用唯一性,可以統(tǒng)計(jì)訪問網(wǎng)站的所有獨(dú)立 IP
3.好友推薦的時(shí)候,根據(jù) tag 求交集,大于某個(gè) threshold 就可以推薦

006Redis中Sorted Set常用命令及應(yīng)用場景。

常用命令: zadd,zrange,zrem,zcard等
含義:和set相比,sorted set增加了一個(gè)權(quán)重參數(shù)score,使得集合中的元素能夠按score進(jìn)行有序排列。

數(shù)據(jù)結(jié)構(gòu):zset是Redis非常有特色的數(shù)據(jù)結(jié)構(gòu),它是基于Set并提供排序的有序集合。其中最為重要的特點(diǎn)就是支持通過score的權(quán)重來指定權(quán)重。一些排行榜、延遲任務(wù)比如指定1小時(shí)后執(zhí)行, 就是使用這個(gè)數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的。


應(yīng)用場景:在直播系統(tǒng)中,實(shí)時(shí)排行信息包含直播間在線用戶列表,各種禮物排行榜,彈幕消息(可以理解為按消息維度的消息排行榜)等信息,適合使用Redis中的SortedSet結(jié)構(gòu)進(jìn)行存儲(chǔ)。

007Redis的Hash沖突怎么辦?

Redis 作為一個(gè)K-V的內(nèi)存數(shù)據(jù)庫,它使用用一張全局的哈希來保存所有的鍵值對。這張哈希表,有多個(gè)哈希桶組成,哈希桶中的entry元素保存了key和value指針,其中*key指向了實(shí)際的鍵,*value指向了實(shí)際的值。

所謂的哈希沖突通是指過不同的key,計(jì)算出一樣的哈希值,導(dǎo)致落在同一個(gè)哈希桶中。
Redis為了解決哈希沖突,采用了鏈?zhǔn)焦!f準(zhǔn)焦J侵竿粋€(gè)哈希桶中,多個(gè)元素用一個(gè)鏈表來保存,它們之間依次用指針連接。

因?yàn)楣_突鏈上的元素只能通過指針逐一查找再操作,所以當(dāng)往哈希表插入數(shù)據(jù)很多,沖突也會(huì)越多,沖突鏈表就會(huì)越長,那查詢效率就會(huì)降低了。為了保持高效,Redis 會(huì)對哈希表做rehash操作,也就是增加哈希桶,減少?zèng)_突。為了rehash更高效,Redis還默認(rèn)使用了兩個(gè)全局哈希表,一個(gè)用于當(dāng)前使用,稱為主哈希表,一個(gè)用于擴(kuò)容,稱為備用哈希表。

008說說Redis哈希槽的概念?

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

目錄

返回頂部
主站蜘蛛池模板: 羞羞视频在线观看 | 梦想成为魔法少女在线观看 | 欧美24video| 综合色在线 | 日本免费一区二区三区看片 | 天天cao| 国产在线一区二区三区在线 | 国产精品视频第一区二区 | 中文字幕一区二区三区免费视频 | 日韩欧美精品综合一区二区三区 | 久久久久久日本一区99 | 亚洲午夜久久久久国产 | 奇米网久久 | 手机观看毛片 | 久在线观看 | 色综合久久中文色婷婷 | 欧美jizzhd精品欧美另类 | xxxx免费国产在线视频 | 日韩一区二区视频 | 91精品日本久久久久久牛牛 | 国产中文一区 | 亚洲福利视频一区二区三区 | 欧美高清一区二区三区欧美 | 久久天天躁狠狠躁狠狠躁 | 牛牛影视在线 | 日本不卡不码高清免费观看 | 欧美一区二区三区在线可观看 | 黄色免费看网站 | 亚洲图片综合区 | 国产探花在线观看 | 国产精品久久久久9999 | 中文字幕第66页永久乱码 | 夜夜撸天天操 | 91精品91久久久| 久久综合给合久久狠狠狠97色 | 精品69久久久久久99 | 亚洲人体视频 | 国产综合区 | 天天干天天弄 | 草久久| 免费一级毛片在线播放视频 |