人
已閱讀
已閱讀
APP開發(fā)什么時(shí)候需要使用到redis數(shù)據(jù)庫
來源:lexintech.com ?? ?? 發(fā)布時(shí)間:2019-07-29
這是一篇關(guān)于APP開發(fā)數(shù)據(jù)庫的技術(shù)型文章,本文分享了對(duì)redis的一些較為深入的理解以及不錯(cuò)的實(shí)戰(zhàn)經(jīng)驗(yàn)。APP開發(fā)的程序員們可以了解一下。
首先簡單介紹一下redis是什么。借用百度百科的解釋:redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
對(duì)于APP開發(fā)的項(xiàng)目來說,redis要怎么使用?首先要安裝好redis,然后運(yùn)行,在pom文件中引入依賴,在要使用redis緩存的類的mapper.xml文件配置redis的全限定名。引入redis的redis.properties文件(如果要更改配置就可以使用)
APP開發(fā)什么樣的應(yīng)用場景需要用到redis呢?
String :
1存儲(chǔ)json類型對(duì)象,2計(jì)數(shù)器,3優(yōu)酷視頻點(diǎn)贊等
list(雙向鏈表)
1可以使用redis的list模擬隊(duì)列,堆,棧
2朋友圈點(diǎn)贊(一條朋友圈內(nèi)容語句,若干點(diǎn)贊語句)
為什么redis是單線程的都那么快?原因主要有以下幾點(diǎn):
1.數(shù)據(jù)存于內(nèi)存
2.用了多路復(fù)用I/O
3.單線程
redis也可以進(jìn)行發(fā)布訂閱消息(然后可以引出哨兵模式(后面會(huì)講)怎么互相監(jiān)督的,就是因?yàn)槊扛?秒哨兵節(jié)點(diǎn)會(huì)發(fā)布對(duì)某節(jié)點(diǎn)的判斷和自身的信息到某頻道,每個(gè)哨兵訂閱該頻道獲取其他哨兵節(jié)點(diǎn)和主從節(jié)點(diǎn)的信息,以達(dá)到哨兵間互相監(jiān)控和對(duì)主從節(jié)點(diǎn)的監(jiān)控)和很多專業(yè)的消息隊(duì)列系統(tǒng)(例如Kafka、RocketMQ)相比,Redis的發(fā)布訂閱略顯粗糙,例如無法實(shí)現(xiàn)消息堆積和回溯。但勝在足夠簡單。
redis還能將數(shù)據(jù)持久化,將內(nèi)存中的數(shù)據(jù)異步寫入硬盤中,兩種方式:RDB(默認(rèn))和AOF
RDB持久化原理:通過bgsave命令觸發(fā),然后父進(jìn)程執(zhí)行fork操作創(chuàng)建子進(jìn)程,子進(jìn)程創(chuàng)建RDB文件,根據(jù)父進(jìn)程內(nèi)存生成臨時(shí)快照文件,完成后對(duì)原有文件進(jìn)行原子替換(定時(shí)一次性將所有數(shù)據(jù)進(jìn)行快照生成一份副本存儲(chǔ)在硬盤中)
優(yōu)點(diǎn):是一個(gè)緊湊壓縮的二進(jìn)制文件,Redis加載RDB恢復(fù)數(shù)據(jù)遠(yuǎn)遠(yuǎn)快于AOF的方式。
缺點(diǎn):由于每次生成RDB開銷較大,非實(shí)時(shí)持久化,
AOF持久化原理:開啟后,Redis每執(zhí)行一個(gè)修改數(shù)據(jù)的命令,都會(huì)把這個(gè)命令添加到AOF文件中。
優(yōu)點(diǎn):實(shí)時(shí)持久化。
缺點(diǎn):所以AOF文件體積逐漸變大,需要定期執(zhí)行重寫操作來降低文件體積,加載慢
以上就是一些對(duì)redis的簡單介紹,有興趣的程序員可以深入學(xué)習(xí)一下。