1. 程式人生 > 其它 >【99期】中高階開發面試必問的Redis,看這篇就夠了!

【99期】中高階開發面試必問的Redis,看這篇就夠了!

Redis 是速度非常快的非關係型(NoSQL)記憶體鍵值資料庫。
鍵的型別只能為字串,值支援五種資料型別:字串、列表、集合、散列表、有序集合。

Redis常用的資料型別

資料型別 可以儲存的值 操作
STRING 字串、整數或者浮點數 對整個字串或者字串的其中一部分執行操作
對整數和浮點數執行自增或者自減操作
LIST 列表 從兩端壓入或者彈出元素
對單個或者多個元素
進行修剪,只保留一個範圍內的元素
SET 無序集合 新增、獲取、移除單個元素
檢查一個元素是否存在於集合中
計算交集、並集、差集
從集合裡面隨機獲取元素
HASH 包含鍵值對的無序散列表 新增、獲取、移除單個鍵值對
獲取所有鍵值對
檢查某個鍵是否存在
ZSET 有序集合 新增、獲取、刪除元素
根據分值範圍或者成員來獲取元素
計算一個鍵的排名

Redis的使用場景

計數器

可以對 String 進行自增自減運算,從而實現計數器功能。
Redis 這種記憶體型資料庫的讀寫效能非常高,很適合儲存頻繁讀寫的計數量。

快取

將熱點資料放到記憶體中,設定記憶體的最大使用量以及淘汰策略來保證快取的命中率。

訊息佇列

List 是一個雙向連結串列,可以通過 lpush 和 rpop 寫入和讀取訊息
不過最好使用 Kafka、RabbitMQ 等訊息中介軟體。

會話快取

可以使用 Redis 來統一儲存多臺應用伺服器的會話資訊。
當應用伺服器不再儲存使用者的會話資訊,也就不再具有狀態,一個使用者可以請求任意一個應用伺服器,從而更容易實現高可用性以及可伸縮性。

分散式鎖實現

在分散式場景下,無法使用單機環境下的鎖來對多個節點上的程序進行同步。
可以使用 Redis 自帶的 SETNX 命令實現分散式鎖,除此之外,還可以使用官方提供的 RedLock 分散式鎖實現。

其他

Set 可以實現交集、並集等操作,從而實現共同好友等功能。
ZSet 可以實現有序性操作,從而實現排行榜等功能。

Redis與Memcached的區別