Redis基礎篇——介紹以及瞭解

原文鏈接https://juejin.im/post/5da80bb8f265da5b555f6dde

Redis基礎篇

安裝

Redis基礎篇——Redis安裝

Redis 介紹

Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。

Redis 與其他 key - value 緩存產品有以下三個特點:

  1. Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載進行使用。
  2. Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  3. Redis支持數據的備份,即master-slave模式的數據備份。

Redis 優勢

  1. 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  2. 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
  3. 原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
  4. 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value存儲有什麼不同?

  1. Redis有着更爲複雜的數據結構並且提供對他們的原子性操作,這是一個不同於其他數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。

  2. Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,因爲數據量不能大於硬件內存。在內存數據庫方面的另一個優點是,相比在磁盤上相同的複雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因爲他們並不需要進行隨機訪問。

Redis 特點

  • 支持數據持久化,可將內存中的數據保存在磁盤,重啓時再次加載
  • 支持 KV 類型數據,也支持其他豐富的數據結構存儲
  • 支持數據備份,即 master-slave 模式的數據備份

Redis 支持哪些數據結構

  • STRING:字符串、整數或浮點數

  • LIST:列表,可存儲多個相同的字符串

  • SET:集合,存儲不同元素,無序排列

  • HASH:散列表,存儲鍵值對之間的映射,無序排列

  • ZSET:有序集合,存儲鍵值對,有序排列

Redis 與 Memcache 區別

對比項 Redis Memcache
數據結構 豐富數據類型 只支持簡單 KV 數據類型
數據一致性 事務 cas
持久性 快照/AOF 不支持
網絡IO 單線程 IO 複用 多線程、非阻塞 IO 複用
內存管理機制 現場申請內存 預分配內存

爲什麼 Redis 是單線程的

Redis 是基於內存的操作,CPU 不是 Redis 的瓶頸,Redis 瓶頸最有可能是內存或網絡。而且單線程容易實現,避免了不必要的上下文切換和競爭條件,不存在多線程切換消耗 CPU

各個數據類型應用場景:

類型 簡介 特性 場景
String(字符串) 二進制安全 可以包含任何數據,比如jpg圖片或者序列化的對象,一個鍵最大能存儲512M
Hash(字典) 鍵值對集合,即編程語言中的Map類型 適合存儲對象,並且可以像數據庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字符串反序列化成對象修改完再序列化存回去) 存儲、讀取、修改用戶屬性
List(列表) 鏈表(雙向鏈表) 增刪快,提供了操作某一段元素的API 1,最新消息排行等功能(比如朋友圈的時間線) 2,消息隊列
Set(集合) 哈希表實現,元素不重複 1、添加、刪除,查找的複雜度都是O(1) 2、爲集合提供了求交集、並集、差集等操作 1、共同好友 2、利用唯一性,統計訪問網站的所有獨立ip 3、好友推薦時,根據tag求交集,大於某個閾值就可以推薦
Sorted Set(有序集合) 將Set中的元素增加一個權重參數score,元素按score有序排列 數據插入集合時,已經進行天然排序 1、排行榜 2、帶權重的消息隊列

redis篇集合

Redis基礎篇——Redis安裝
Redis基礎篇——介紹以及瞭解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章