標籤:

redis+mysql有幾種用法?

看到很多網站都是用redis作為mysql的緩存使用。

但redis不是自身就可以持久化嗎?是否可以讓redis和mysql各自存儲不同的數據?

另外,redis是單線程的,在OLTP系統中,是否會出現性能問題?


一般來說,寫入數據是直接到mysql,讀取類的是redis。 這樣就說 mysql-&>redis的同步用的比較多。 mysql作為數據持久化和管理比redis好太多,redis大多只用來做 數據讀取緩存、隊列、鎖、等等的使用。 持久化的話也提供了rdb、aof 保證數據的實時不丟失。

mysql-&>redis實時同步可參考這個配置

https://github.com/liukelin/canal_mysql_nosql_sync


redis和mysql要根據具體業務場景去選型

  • mysql:數據放在磁碟

  • redis:數據放在內存

redis適合放一些頻繁使用,比較熱的數據,因為是放在內存中,讀寫速度都非常快,一般會應用在下面一些場景

  • 排行榜

  • 計數器

  • 消息隊列推送

  • 好友關注,粉絲

還是具體問題具體分析,這裡有文章分享:Redis文章分享

看能幫到你嗎?


首先要知道mysql存儲在磁碟里,redis存儲在內存里,redis既可以用來做持久存儲,也可以做緩存,而目前大多數公司的存儲都是mysql + redis,mysql作為主存儲,redis作為輔助存儲被用作緩存,加快訪問讀取的速度,提高性能

那麼為什麼不直接全部用redis存儲呢?

我的看法是:因為redis存儲在內存中,如果存儲在內存中,存儲容量肯定要比磁碟少很多,那麼要存儲大量數據,只能花更多的錢去購買內存,造成在一些不需要高性能的地方是相對比較浪費的,所以目前基本都是mysql(主) + redis(輔),在需要性能的地方使用redis,在不需要高性能的地方使用mysql,好鋼用在刀刃上

學習Redis從這裡開始 - 非同步社區

這個講得不錯,可以看看


持久化到Mysql可以試試我寫的

GitHub - leonchen83/redis-replicator: Redis Replicator is a redis RDB and Command parser written in java. It can parse,filter,broadcast the RDB and Command events in a real time manner. It also can sync redis data to your local cache or to database.

&
&com.moilioncircle&
&redis-replicator&
&2.4.6&
&


數據結構的四種基本類型,集合、線性、樹型、圖型。樹型結構和圖型結構是集合與線性數據複合來的。mysql作為關係型數據,很好地解決了線性數據的問題,但是用mysql存儲集合併不方便。而redis很好地解決了集合的問題,把數據分成數據層與數據關係層,mysql存儲數據,redis存儲數據關係,就好比一個用戶會產生很多訂單,用戶與訂單是基本數據,用戶與訂單的關係是數據關係。這樣以後想要分析數據只要分析mysql里的東西,分析數據關係只要分析redis里的東西。充分發揮兩種資料庫的長處,也為mysql做分表分庫做準備。


Redis 是高性能、高可用、基於內存存儲的 key-value 在線存儲服務,兼容開源的 Redis 協議,滿足數據持久化需求。Redis存於內存,讀寫速度快,而mysql存於磁碟。但是Redis因為是存於內存,容量小,要擴容就得花錢買更大的內存。這個性價比自己衡量。

mysql作為數據存儲和管理比redis有優勢,redis主要用作數據讀取緩存、隊列等的使用。

Redis 產品特點導讀:Redis_緩存服務_key-value在線存儲服務-網易雲

Redis特性:


怎麼持久化到mysql呢,同求


只是做緩存的話,memcache似乎更合適

redis和mysql當然可以各自存儲不同數據啊

如果只是IO,沒有計算等耗時操作的話,單線程應該更高效


redis,最關鍵是隊列,對於一定要按先後順序的交易場景是非常有用的,比如庫存扣減,在線交易的支付等,就可以將交易操作壓入隊列,按順序來處理,這樣就能保證交易數據的完整性


之前看到有個案例 全站都用redis做緩存和持久存儲 相當時髦


推薦閱讀:

redis的安裝和分散式配置簡潔教程
求指教學習redis源碼的方法?
集群環境中資料庫與緩存的三板斧
aredis —— 一款高效的非同步 redis 客戶端

TAG:Redis |