黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

面試題首頁 > Redis面試題

Redis數據結構面試題

001什么是布隆過濾器?

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

002Redis中String常用命令及應用場景。

常用命令:  set,get,decr,incr,mget 等。
含義:String數據結構是簡單的Key-Value類型,value不僅可以是String,也可以是數字。
數據結構:內部結構實現上類似于 Java 的 ArrayList,采用預分配冗余空間的方式來減少內存的頻繁分配,如圖所示:

len 是當前字符串實際長度,capacity 是為字符串分配的可用空間,當字符串長度小于 1M 時,擴容都是加倍現有的空間,如果超過 1M,擴容時一次只會多擴 1M 的空間。字符串最大長度為 512M。
應用場景: 常規計數,微博數,粉絲數等。

003Redis中Hash常用命令及應用場景。

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


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

004Redis中List常用命令及應用場景。

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

應用場景:微博的關注列表,粉絲列表,最新消息排行等功能

005Redis中Set常用命令及應用場景。

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


場景應用:
1.共同好友、二度好友
2.利用唯一性,可以統計訪問網站的所有獨立 IP
3.好友推薦的時候,根據 tag 求交集,大于某個 threshold 就可以推薦

006Redis中Sorted Set常用命令及應用場景。

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

數據結構:zset是Redis非常有特色的數據結構,它是基于Set并提供排序的有序集合。其中最為重要的特點就是支持通過score的權重來指定權重。一些排行榜、延遲任務比如指定1小時后執行, 就是使用這個數據結構實現的。


應用場景:在直播系統中,實時排行信息包含直播間在線用戶列表,各種禮物排行榜,彈幕消息(可以理解為按消息維度的消息排行榜)等信息,適合使用Redis中的SortedSet結構進行存儲。

007Redis的Hash沖突怎么辦?

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

所謂的哈希沖突通是指過不同的key,計算出一樣的哈希值,導致落在同一個哈希桶中。
Redis為了解決哈希沖突,采用了鏈式哈希。鏈式哈希是指同一個哈希桶中,多個元素用一個鏈表來保存,它們之間依次用指針連接。

因為哈希沖突鏈上的元素只能通過指針逐一查找再操作,所以當往哈希表插入數據很多,沖突也會越多,沖突鏈表就會越長,那查詢效率就會降低了。為了保持高效,Redis 會對哈希表做rehash操作,也就是增加哈希桶,減少沖突。為了rehash更高效,Redis還默認使用了兩個全局哈希表,一個用于當前使用,稱為主哈希表,一個用于擴容,稱為備用哈希表。

008說說Redis哈希槽的概念?

Redis集群沒有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384個哈希槽,每個key通過CRC16校驗后對16384取模來決定放置哪個槽,集群的每個節點負責一部分hash槽。

目錄

返回頂部
主站蜘蛛池模板: 欧美激情一区二区三区免费观看 | 人人玩人人添人人澡免费 | 国产中文字幕乱人伦在线观看 | 99爱视频 | 成人a毛片免费视频观看 | 黑丝视频网站 | 黄视频网站在线 | 日韩欧美亚洲中字幕在线播放 | 国产精品天天看 | 五月婷婷伊人 | 久久国产欧美日韩高清专区 | 国产精品99久久久久久董美香 | 波多野吉衣 免费一区 | 欧美大陆日韩一区二区三区 | 国产在线a视频 | 一级做a爱免费观看视频 | 亚洲视频在线观看视频 | 免费国产成人高清在线看软件 | 欧美成人亚洲国产精品 | 最近中文日本字幕免费完整 | 亚洲高清一区二区三区四区 | 91抖音成人 | 国产欧美精品一区二区三区四区 | 欧美激情(一区二区三区) | ts人妖另类国产 | 男人的天堂色偷偷之色偷偷 | 又大又粗又爽黄毛片 | 天天摸天天碰成人免费视频 | 羞羞视频免费观看 | 免费黄色在线视频 | 外国毛片大全免费看 | 日韩电 影在线播放 | 中文字幕一区日韩在线视频 | 最近中文字幕免费国语 | 国产中日韩一区二区三区 | 亚洲日本在线播放 | 中文字幕丰满孑伦 | 免费黄色在线网站 | 久久人人爽人人爽人人爽 | 麻豆国产在线观看免费 | 日本国产一区在线观看 |