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

Redis基礎篇

Redis 介紹

Redis 是徹底開源免費的,遵照BSD協議,是一個高性能的key-value數據庫。程序員

Redis 與其餘 key - value 緩存產品有如下三個特色:redis

  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(集合) 哈希表實現,元素不重複 一、添加、刪除,查找的複雜度都是O(1) 二、爲集合提供了求交集、並集、差集等操做 一、共同好友 二、利用惟一性,統計訪問網站的全部獨立ip 三、好友推薦時,根據tag求交集,大於某個閾值就能夠推薦
Sorted Set(有序集合) 將Set中的元素增長一個權重參數score,元素按score有序排列 數據插入集合時,已經進行自然排序 一、排行榜 二、帶權重的消息隊列

redis篇集合

Redis基礎篇——Redis安裝

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

Redis基礎篇——基本用法

Redis進階篇——PHP鏈接redis

相關文章
相關標籤/搜索