企業級Redis開發運維從入門到實踐 (1)—Redis 初識
Redis是什麼
Redis是一個開源、基於鍵值的儲存服務系統,具有多種資料結構,同時具有高效能、功能豐富(即高效能Key-Value、多種資料結構、豐富的功能、高可用分散式支援的資料儲存服務)的特性。
Redis使用公司
下面等公司都在使用Redis
Redis的特性
八大特性:速度快、持久化、 多種資料結構、支援多種變成語言、功能豐富、簡單、主從複製、高可用與分散式。
速度快
10w OPS,即每秒10w的讀寫(官方提供),該特性的原因
- 資料儲存於記憶體中
- C語言(50000 line實現,單機核心程式碼在23000 line,其他的是分散式部分)
- 單執行緒模型
記憶體、SSD硬碟、機械硬碟的快速讀寫的效率對比
持久化(當機不丟資料)
Redis所有資料保持在記憶體中,對資料的更新將非同步地儲存到磁碟上。提供了RDB和AOF兩種方式做資料持久化。
Key-Value資料結構
Redis提供了五種主要資料結構
- 字串(String)
- 雜湊(Hash Tables (objects!))
- 列表(Linked Lists)
- 集合(Sets)
- 有序集合(Sorted Sets)
新版本增加的資料型別
- 點陣圖(Bitmaps):使用很小的記憶體實現高效的儲存,例如布隆過濾器可以使用Bitmaps實現,本質還是字串。
- 超小記憶體唯一計數(HyperLogLog):只用12k的存量儲存一個唯一值計數,計數不一定準確有一定的誤差率,本質還是字串。
- 地圖資訊位(GEO):Redis3.2提供的一個地理資訊定位的資料型別,可以計算經度和緯度。
支援多種客戶端語言
不僅支援以下語言,還支援其他的語言。
功能豐富
Redis提供了多種豐富的功能
- 釋出訂閱
- 事務
- Lua指令碼
- pipeline
簡單
Redis簡單在於單機核心程式碼量大約23000行C編寫而成,方便開發者對日誌的分析或者開發者根據自己的業務需求進行修改來實現業務的定製化。
注:但是Redis的首要是任務是開發和運維,在有大量經驗後帶著問題去看原始碼來解決問題。
Redis簡單的其他原因
- 不依賴外部庫(like libevent)
- 單執行緒模型:不論是服務端還是客戶端開發都將相對容易些。
主從複製
在Redis中有兩種角色:主伺服器、從伺服器。
主伺服器的資料可以同步到從伺服器上,這樣可以為高可用和分散式提供很好的基礎。
主從複製是Redis開發和運維的痛點之一。
高可用、分散式
Redis單點和主從複製模型對於實現一個高可用資料庫來說是比較難甚至無法實現的,所以Redis從2.8版本中提供了**Redis-Sentinel(v2.8)**支援高可用。
其次對於一個具有儲存功能的服務來講,他的分散式功能對於當下的市場來說是非常重要的,所以Redis從3.0版中正式提供了**Redis-Cluster(v3.0)**支援分散式。
Redis典型應用場景
- 快取系統:使用者請求App Server,基於高併發處理App Server首先向Cache(Redis)中查詢資料,如果Cache(Redis)中存在資料將資料返回App Server;如果Cache(Redis)不存在將去Storage儲存層(MySQL、Oracle、PostgreSql等)查詢資料,將資料返回App Server,於此同時存入Cache(Redis)中以提供高可用。
- 計數器:微博的轉發數和評論數都是可以使用計數器實,Redis的INCR key可以執行遞增操作來實現計數。
- 訊息佇列系統:在訊息佇列要求不是很強的時候可以使用Redis的釋出訂閱模式作簡單的中介軟體使用。
- 排行榜:Redis提供的有序集合在實現排行榜功能是非常簡單的。
- 社交網路:社交網路的粉絲數、關注數、共同關注等功能均可用Redis來實現。
- 實時系統:垃圾郵件處理系統,訊息佇列緩衝系統。
相關文章
- Redis從入門到精通:初級篇Redis
- Redis 從入門到實戰Redis
- Redis從入門到精通:中級篇Redis
- Redis從入門到高可用,分散式實踐(1)- 基礎介紹Redis分散式
- 《Redis開發與運維》第一章 初識Redis 讀書筆記Redis運維筆記
- Redis從入門到進階Redis
- docker 入門到實戰 1.初識 dockerDocker
- Redis 從入門到奪門而出 - 基礎Redis
- NGINX 入門到企業級應用實踐-基礎篇Nginx
- 《Terraform 101 從入門到實踐》 第一章 Terraform初相識ORM
- Docker從入門到精通(一)——初識Docker
- 初識RedisRedis
- Redis從入門到放棄系列(十) ClusterRedis
- GraphQL 從入門到實踐
- 運維初級實踐——Linux系統命令教程運維Linux
- 資料庫運維初入門-SQL Server入門到跑路002-初使用資料庫運維SQLServer
- 《Redis開發與運維》快速筆記Redis運維筆記
- redis學習筆記1: Redis入門Redis筆記
- ASP.NET Core 6 從入門到企業級實戰開發應用技術彙總ASP.NET
- RecyclerView從認識到實踐(1)View
- Redis日常運維-基礎認識Redis運維
- 店鋪營業狀態開發+redis入門Redis
- Redis學習(一)——初識RedisRedis
- Redis 7.x 入門和開發實戰Redis
- (Redis):Redis入門Redis
- Kafka從入門到放棄(一) —— 初識KafkaKafka
- hive從入門到放棄(一)——初識hiveHive
- redis系列1-入門Redis
- Redis實戰解讀-初識Redis&Redis基本資料型別Redis資料型別
- Redis日常運維-02主從複製Redis運維
- Flask框架從入門到精通之模板初識(五)Flask框架
- Docker從入門到動手實踐Docker
- GDB除錯-從入門到實踐除錯
- Python Type Hints 從入門到實踐Python
- redis持久化開發運維常見問題Redis持久化運維
- Redis開發運維的陷阱及避坑指南Redis運維
- 第一章 認識Redis 【Redis入門教程】Redis
- 1+x雲端計算平臺運維開發初級實操題集合運維