Redis是一個開源的底層使用C語言編寫的key-value儲存資料庫。可用於快取、事件發布訂閱、高速隊列等場景。而且支援豐富的資料類型:string(字串)、hash(哈希)、list(列表)、set(無序集合)、zset(sorted set:有序集合)
Redis在專案中的應用程式場景
1、快取資料
最常用,對經常需要查詢且變動不是很頻繁的數據常稱作熱點數據。
2、訊息佇列
相當於訊息訂閱系統,像是ActiveMQ、RocketMQ。如果對資料有較高一致性要求時,還是建議使用MQ)
3、計數器
例如統計點擊率、按讚率,redis具有原子性,可以避免並發問題
4、電商網站資訊
##大型電商平台初始化頁面資料的緩存。例如去哪裡網買機票的時候首頁的價格和你點進去的價格會有差異。
5、熱點資料
例如新聞網站即時熱點、微博熱搜等,需要頻繁更新。總資料量比較大的時候直接從資料庫查詢會影響效能
Redis資料類型的應用程式場景
前面提到了Redis支援五種豐富的資料類型,那麼在不同場景下我們該怎麼選擇呢?
1、String
字串是最常用的資料類型,他能夠儲存任何類型的字串,當然也包括二進位、 JSON化的物件、甚至是base64編碼之後的圖片。在Redis中一個字串最大的容量為512MB,可以說是無所不能了。
2、Hash
常用作儲存結構化資料、例如論壇系統中可以用來儲存使用者的Id、暱稱、頭像、積分等資訊。如果需要修改其中的信息,只需要透過Key取出Value進行反序列化修改某一項的值,再序列化儲存到Redis中,Hash結構存儲,由於Hash結構會在單一Hash元素在不足一定數量時進行壓縮存儲,所以可以大量節約內存。這一點在String結構裡是不存在的。
3、List
List的實作為雙向鍊錶,即可以支援反向查找和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷,Redis 內部的許多實現,包括發送緩衝佇列等也都是用的這個資料結構。另外,可以利用 lrange 指令,做基於 Redis 的分頁功能,效能極佳,使用者體驗好。
4、Set
set 對外提供的功能與list 類似是一個清單的功能,特殊之處在於set 是可以自動排重的,當你需要儲存一個清單數據,又不希望出現重複數據時,這個時候就可以選擇使用set。
5、Sort Set
可以依照某個條件的權重排序,例如可以透過點擊數做出排行榜的資料應用。
Redis特點:
1、Redis是純記憶體操作,需要的時候需要我們手動持久化到硬碟中
2、Redis是單線程,從而避開了多線程中上下文頻繁切換的操作。
3、Redis資料結構簡單、對資料的操作也比較簡單
4、使用底層模型不同,它們之間底層實現方式以及與客戶端之間通訊的應用協定不一樣,Redis直接自己建構了VM 機制,因為一般的系統呼叫系統函數的話,會浪費一定的時間去移動和請求
5、使用多路I/O復用模型,非阻塞I/O
更多Redis相關知識,請造訪Redis使用教學欄位!
以上是redis一般儲存什麼類型數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!