redis系列1-入門
Redis主要有哪些功能?
1.哨兵(Sentinel)和複製(Replication)
Redis伺服器毫無徵兆的罷工是個麻煩事,如何保證備份的機器是原始伺服器的完整備份呢?這時候就需要哨兵和複製。
Sentinel可以管理多個Redis伺服器,它提供了監控,提醒以及自動的故障轉移的功能,Replication則是負責讓一個Redis伺服器可以配備多個備份的伺服器。
Redis也是利用這兩個功能來保證Redis的高可用的
2.事務
很多情況下我們需要一次執行不止一個命令,而且需要其同時成功或者失敗。redis對事務的支援也是源自於這部分需求,即支援一次性按順序執行多個命令的能力,並保證其原子性。
3.LUA指令碼
在事務的基礎上,如果我們需要在服務端一次性的執行更復雜的操作(包含一些邏輯判斷),則lua就可以排上用場了
4.持久化
redis的持久化指的是redis會把記憶體的中的資料寫入到硬碟中,在redis重新啟動的時候載入這些資料,從而最大限度的降低快取丟失帶來的影響。
5.叢集(Cluster)
單臺伺服器資源的總是有上限的,CPU資源和IO資源我們可以通過主從複製,進行讀寫分離,把一部分CPU和IO的壓力轉移到從伺服器上,這也有點類似mysql資料庫的主從同步。
在Redis官方的分散式方案出來之前,有twemproxy和codis兩種方案,這兩個方案總體上來說都是依賴proxy來進行分散式的。
Redis支援哪幾種資料型別?
支援多種型別的資料結構
1.string:最基本的資料型別,二進位制安全的字串,最大512M。
使用場景
-
快取功能:字串最經典的使用場景,Redis作為快取層,MySQL作為儲存層,絕大部分請求資料都是Redis中獲取,由於Redis具有支撐高併發特性,所以快取通常能起到加速讀寫和降低後端壓力的作用。
-
計數器:許多運用都會使用Redis作為計數的基礎工具,他可以實現快速計數、查詢快取的功能,同時資料可以一步落地到其他的資料來源。
例如:視訊播放數系統就是使用Redis作為視訊播放數計數的基礎元件。 -
共享Session:出於負載均衡的考慮,分散式服務會將使用者資訊的訪問均衡到不同伺服器上,使用者重新整理一次訪問可能會需要重新登入,為避免這個問題可以用Redis將使用者Session集中管理,在這種模式下只要保證Redis的高可用和擴充套件性的,每次獲取使用者更新或查詢登入資訊都直接從Redis中集中獲取。
-
限速:處於安全考慮,每次進行登入時讓使用者輸入手機驗證碼,為了簡訊介面不被頻繁訪問,會限制使用者每分鐘獲取驗證碼的頻率。
2.list:按照新增順序保持順序的字串列表。
常用命令
-
lpush、rpush、lpop、rpop、lrange等。
使用場景
-
訊息佇列:Redis的lpush+brpop命令組合即可實現阻塞佇列,生產者客戶端是用lupsh從列表左側插入元素,多個消費者客戶端使用brpop命令阻塞時的“搶”列表尾部的元素,多個客戶端保證了消費的負載均衡和高可用性。
3.set:無序的字串集合,不存在重複的元素。
常用命令
-
sadd、spop、smembers、sunion等。
使用場景
-
標籤(tag):集合型別比較典型的使用場景,如一個使用者對娛樂、體育比較感興趣,另一個可能對新聞感興趣,這些興趣就是標籤,有了這些資料就可以得到同一標籤的人,以及使用者的共同愛好的標籤,這些資料對於使用者體驗以及增強使用者粘度比較重要。
注意:使用者和標籤的關係維護應該放在一個事物內執行,防止部分命令失敗造成資料不一致。 -
4.sorted set:已排序的字串集合。
常用命令
-
zadd、zrange、zrem、zcard等。
使用場景
-
排行榜:例如視訊網站需要對使用者上傳的視訊做排行榜,榜單維護可能是多方面:按照時間、按照播放量、按照獲得的贊數等。
5.hash:key-value對的一種集合。
常用命令
-
hget、hset、hgetall等。
使用場景
-
通常用來儲存一個使用者資訊的物件資料,例如記錄網站每個使用者個人主頁的訪問量:hincrby user:1:info pageviewcount。
快取視訊的基本資訊(資料來源在Mysql中)。
相關文章
- ML.NET技術研究系列1-入門篇
- (Redis):Redis入門Redis
- Docker 入門系列三:Docker 應用部署-RedisDockerRedis
- Redis從入門到放棄系列(十) ClusterRedis
- Redis7.0最新系列教程-基礎入門Redis
- 深入剖析Redis系列(一) – Redis入門簡介與主從搭建Redis
- 深入剖析Redis系列(一) - Redis入門簡介與主從搭建Redis
- Redis 入門Redis
- redis入門Redis
- redis-入門Redis
- Redis 入門篇Redis
- Redis 、MongoDB入門RedisMongoDB
- Redis 入門使用Redis
- Redis快速入門Redis
- Redis入門(三)Redis
- flask文件學習筆記1-快速入門Flask筆記
- OPNET入門1-第一個模擬例子
- Redis入門手冊Redis
- Redis入門基礎Redis
- Redis入門筆記Redis筆記
- Redis 入門 - 簡介Redis
- Redis 入門 - 收官Redis
- shell入門系列
- redis學習筆記1: Redis入門Redis筆記
- 09、redis安裝入門Redis
- Redis 萬字入門教程Redis
- Redis 入門權威指北Redis
- day01-Redis入門Redis
- 一文入門RedisRedis
- Redis 入門指南九:Redis 有序集合(sorted set)Redis
- Redis in .NET Core 入門:(3) HashRedis
- Redis in .NET Core 入門:(2) StringRedis
- redis入門指南(六)—— 叢集Redis
- Redis入門--進階詳解Redis
- Redis Lua指令碼完全入門Redis指令碼
- Redis從入門到進階Redis
- Redis 從入門到實戰Redis
- MySQL入門系列:檢視MySql