1. 程式人生 > >面試Java被問到Redis資料結構的幾個面試題

面試Java被問到Redis資料結構的幾個面試題

Redis資料結構的面試題答案下面幾乎可以涵蓋。
時間複雜度的話去官網看下,每個命令的時間複雜度官網都給出了。

1、Redis的五種資料型別
字串string:字串型別是Redis中最為基礎的資料儲存型別,是一個由位元組組成的序列,他在Redis中是二進位制安全的,這便意味著該型別可以接受任何格式的資料,如JPEG影象資料貨Json物件描述資訊等,是標準的key-value,一般來存字串,整數和浮點數。Value最多可以容納的資料長度為512MB
應用場景很常見的場景用於統計網站訪問數量,當前線上人數等。incr命令(++操作)

列表list:Redis的列表允許使用者從序列的兩端推入或者彈出元素,列表由多個字串值組成的有序可重複的序列,是連結串列結構。好比Java的linkedList,在往兩端插入和刪除資料時,效率是非常高的,往中間插入資料效率是很低下的。List中可以包含的最大元素數量是2
32 - 1(即42,9496,7295),40多億。
應用場景:1.最新訊息、排行榜。2.訊息佇列,以完成多程式之間的訊息交換。可以用push操作將任務存在list中(生產者),然後執行緒在用pop操作將任務取出進行執行。(消費者)

集合set:Redis的集合是無序不可重複的,和列表一樣,在執行插入和刪除和判斷是否存在某元素時,效率是很高的。集合最大的優勢在於可以進行交集並集差集操作。Set可包含的最大元素數量是232 - 1(即42,9496,7295),40多億
應用場景:1.利用交集求共同好友。2.利用唯一性,可以統計訪問網站的所有獨立IP。3.好友推薦的時候根據tag求交集大於某個threshold(臨界值的)就可以推薦


雜湊hash:Redis中的雜湊可以看成具有String key和String value的map容器,可以將多個key-value儲存到一個key中。每一個Hash可以儲存232 - 1(即42,9496,7295)個鍵值對。
應用場景:例如儲存、讀取、修改使用者屬性(name,age,pwd等)

有序集合zset(sorted set):和set很像,都是字串的集合,都不允許重複的成員出現在一個set中。他們之間差別在於有序集合中每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。儘管有序集合中的成員必須是衛衣的,但是分數(score)卻可以重複。

應用場景:可以用於一個大型線上遊戲的積分排行榜

,每當玩家的分數發生變化時,可以執行zadd更新玩家分數(score),此後在通過zrange獲取積分top ten的使用者資訊。

轉載自:https://www.52pojie.cn/thread-558953-1-1.html