使用redis数据库的目的?
1、 redis簡介?
redis是Nosql數(shù)據(jù)庫中使用較為廣泛的非關(guān)系型內(nèi)存數(shù)據(jù)庫,redis內(nèi)部是一個key-value存儲系統(tǒng)。它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型,類似于Java中的map)。Redis基于內(nèi)存運行并支持持久化的NoSQL數(shù)據(jù)庫,是當(dāng)前最熱門的NoSql數(shù)據(jù)庫之一,也被人們稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。?
2、 互聯(lián)網(wǎng)時代背景下大機(jī)遇,什么要使用Nosql??
1) 當(dāng)數(shù)據(jù)量的總大小一個機(jī)器放不下時。?
2) 數(shù)據(jù)索引一個機(jī)器的內(nèi)存放不下時。?
3) 訪問量(讀寫混合)一個實例放不下時。
單機(jī)時代模型?
如果每次存儲成千上萬條數(shù)據(jù),這樣很會導(dǎo)致mysql的性能很差,存儲以及讀取速度很慢,然后就演變成緩存+mysql+垂直拆分的方式。?
Cache作為中間緩存?
將所有的數(shù)據(jù)先保存到緩存中,然后再存入mysql中,減小數(shù)據(jù)庫壓力,提高效率。?
但是當(dāng)數(shù)據(jù)再次增加到又一個量級,上面的方式也不能滿足需求,由于數(shù)據(jù)庫的寫入壓力增加,Memcached只能緩解數(shù)據(jù)庫的讀取壓力。讀寫集中在一個數(shù)據(jù)庫上讓數(shù)據(jù)庫不堪重負(fù),大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達(dá)到讀寫分離,以提高讀寫性能和讀庫的可擴(kuò)展性。Mysql的master-slave模式成為這個時候的網(wǎng)站標(biāo)配了。?
主從分離模式?
在redis的高速緩存,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上,這時MySQL主庫的寫壓力開始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會出現(xiàn)嚴(yán)重的鎖問題,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM。?
分表分庫模式?
將變化小的、業(yè)務(wù)相關(guān)的放在一個數(shù)據(jù)庫,變化多的,不相關(guān)的數(shù)據(jù)放在一個數(shù)據(jù)庫。?
3、 nosql數(shù)據(jù)庫的優(yōu)勢?
1)易擴(kuò)展?
這些類型的數(shù)據(jù)存儲不需要固定的模式,無需多余的操作就可以進(jìn)行橫向的擴(kuò)展。相對于關(guān)系型數(shù)據(jù)庫可以減少表和字段特別多的情況。也無型之間在架構(gòu)的層面上帶來了可擴(kuò)展的能力?
2)大數(shù)據(jù)量提高性能?
3)多樣靈活的數(shù)據(jù)模型?
在nosql中不僅可以存儲String,hash,set、Zset等數(shù)據(jù)類型,還可以保存javaBean以及多種復(fù)雜的數(shù)據(jù)類型。?
4、 NoSql的應(yīng)用?
1) 大數(shù)據(jù)時代淘寶、微信、以及微博等都廣泛的使用了redis數(shù)據(jù)庫,將一些固定不變的數(shù)據(jù)例如學(xué)校,區(qū)域等固定的信息保存在關(guān)系型數(shù)據(jù)庫中。然后對于經(jīng)常變化的數(shù)據(jù)例如淘寶每個節(jié)日都會有比較熱門的搜索顯示在搜索框,當(dāng)節(jié)日過去關(guān)鍵字自動刪除,為了便于管理,可以將這些數(shù)據(jù)保存在redis數(shù)據(jù)庫中,并設(shè)置過期時間,到達(dá)時間就自動刪除。?
2)為了緩解數(shù)據(jù)庫壓力,微博首先將發(fā)送的微博保存到redis數(shù)據(jù)庫,自己可以立即查看到,然后將內(nèi)存中的數(shù)據(jù)同步到關(guān)系型數(shù)據(jù)庫。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的使用redis数据库的目的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统编程:简单实现ls -R
- 下一篇: Redis的事务(一次执行多条命令,防止