一、Redis是什么
Redis 是一種基于內(nèi)存的數(shù)據(jù)庫,對數(shù)據(jù)的讀寫操作都是在內(nèi)存中完成,因此讀寫速度非???,常用于緩存,消息隊列、分布式鎖等場景。
????????Redis 提供了多種數(shù)據(jù)類型來支持不同的業(yè)務(wù)場景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位圖)、HyperLogLog(基數(shù)統(tǒng)計)、GEO(地理信息)、Stream(流),并且對數(shù)據(jù)類型的操作都是原子性的,因為執(zhí)行命令由單線程負(fù)責(zé)的,不存在并發(fā)競爭的問題。
二、Redis與Memcached的區(qū)別
- Redis 支持的數(shù)據(jù)類型更豐富(String、Hash、List、Set、ZSet),而 Memcached 只支持最簡單的 key-value 數(shù)據(jù)類型;
- Redis 支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進(jìn)行使用,而 Memcached 沒有持久化功能,數(shù)據(jù)全部存在內(nèi)存之中,Memcached 重啟或者掛掉后,數(shù)據(jù)就沒了;
- Redis 原生支持集群模式,Memcached 沒有原生的集群模式,需要依靠客戶端來實現(xiàn)往集群中分片寫入數(shù)據(jù);
- Redis 支持發(fā)布訂閱模型、Lua 腳本、事務(wù)等功能,而 Memcached 不支持;
?? 從數(shù)據(jù)類型、持久化、網(wǎng)絡(luò)IO、集群模式、是否支持事務(wù)/發(fā)布訂閱模型來看區(qū)別
三、為什么用Redis作為MySQL的緩存
1、Redis 具備高性能(內(nèi)存數(shù)據(jù)庫)
假如用戶第一次訪問 MySQL 中的某些數(shù)據(jù)。這個過程會比較慢,因為是從硬盤上讀取的。將該用戶訪問的數(shù)據(jù)緩存在 Redis 中,這樣下一次再訪問這些數(shù)據(jù)的時候就可以直接從緩存中獲取了,操作 Redis 緩存就是直接操作內(nèi)存,所以速度相當(dāng)快。
2、 Redis 具備高并發(fā)(QPS多)
單臺設(shè)備的 Redis 的 QPS(Query Per Second,每秒鐘處理完請求的次數(shù)) 是 MySQL 的 10 倍,Redis 單機(jī)的 QPS 能輕松破 10w,而 MySQL 單機(jī)的 QPS 很難破 1w。
所以,直接訪問 Redis 能夠承受的請求是遠(yuǎn)遠(yuǎn)大于直接訪問 MySQL 的,所以我們可以考慮把數(shù)據(jù)庫中的部分?jǐn)?shù)據(jù)轉(zhuǎn)移到緩存中去,這樣用戶的一部分請求會直接到緩存這里而不用經(jīng)過數(shù)據(jù)庫。
四、Redis為什么這么快
? 使用內(nèi)存存儲,沒有磁盤IO的開銷
? 單線程處理請求,避免線程切換和鎖資源的開銷
? 使用IO多路復(fù)用技術(shù),使用epoll
? 數(shù)據(jù)結(jié)構(gòu)豐富,可以直接應(yīng)用的優(yōu)化數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-685666.html
? 冷熱數(shù)據(jù)分離,熱數(shù)據(jù)在內(nèi)存中,冷數(shù)據(jù)在磁盤文章來源地址http://www.zghlxwxcb.cn/news/detail-685666.html
到了這里,關(guān)于Redis—Redis介紹(是什么/為什么快/為什么做MySQL緩存等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!