日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis的特点持久化的原理及优缺点

發(fā)布時間:2025/3/21 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis的特点持久化的原理及优缺点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄:

  • Redis
  • redis適合什么場景?
  • redis持久化介紹

Redis

redis的概念:

Redis是一款開源的、高性能的鍵-值存儲(key-value store)。它常被稱作是一款數(shù)據(jù)結(jié)構(gòu)服務(wù)器(data structure server)。

redis的數(shù)據(jù)類型:

  • 字符串(strings)類型
  • 列表(lists)
  • 集合(sets)
  • 有序集合(sorted sets)
  • 哈希(hashes)

redis的優(yōu)點(diǎn)

  • 速度快
單線程的redis為什么這么快 ()純內(nèi)存操作 ()單線程操作,避免了頻繁的上下文切換 ()采用了非阻塞I/O多路復(fù)用機(jī)制
  • 支持豐富數(shù)據(jù)類型: String ,List,Set,Sorted Set,Hash 。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數(shù)據(jù)結(jié)構(gòu),此外單個 Value 的最大限制是1GB,不像 Memcached只能保存1MB的數(shù)據(jù),因此Redis可以用來實(shí)現(xiàn)很多有用的功能
  • 豐富的特性
訂閱發(fā)布 Pub / Sub 功能 Key 過期策略 事務(wù) 支持多個 DB 計(jì)數(shù)
  • 持久化存儲
Redis 提供 RDB 和 AOF 兩種數(shù)據(jù)的持久化存儲方案,解決內(nèi)存數(shù)據(jù)庫最擔(dān)心的萬一 Redis 掛掉,數(shù)據(jù)會消失掉。

redis的缺點(diǎn)

  • 由于 Redis 是內(nèi)存數(shù)據(jù)庫,數(shù)據(jù)庫容量受到物理內(nèi)存的限制,不能用作海量數(shù)據(jù)的高性能讀寫
  • redis是單線程的,單臺服務(wù)器無法充分利用多核服務(wù)器的CPU
  • redis適合什么場景?

    1、緩存

    緩存現(xiàn)在幾乎是所有中大型網(wǎng)站都在用的必殺技,合理的利用緩存不僅能夠提升網(wǎng)站訪問速度,還能大大降低數(shù)據(jù)庫的壓力。Redis提供了鍵過期功能,也提供了靈活的鍵淘汰策略,所以,現(xiàn)在Redis用在緩存的場合非常多。(推薦:《Redis視頻教程》)

    2、排行榜

    很多網(wǎng)站都有排行榜應(yīng)用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。Redis提供的有序集合數(shù)據(jù)類構(gòu)能實(shí)現(xiàn)各種復(fù)雜的排行榜應(yīng)用。

    3、計(jì)數(shù)器

    什么是計(jì)數(shù)器,如電商網(wǎng)站商品的瀏覽量、視頻網(wǎng)站視頻的播放數(shù)等。為了保證數(shù)據(jù)實(shí)時效,每次瀏覽都得給+1,并發(fā)量高時如果每次都請求數(shù)據(jù)庫操作無疑是種挑戰(zhàn)和壓力。Redis提供的incr命令來實(shí)現(xiàn)計(jì)數(shù)器功能,內(nèi)存操作,性能非常好,非常適用于這些計(jì)數(shù)場景。

    4、分布式會話

    集群模式下,在應(yīng)用不多的情況下一般使用容器自帶的session復(fù)制功能就能滿足,當(dāng)應(yīng)用增多相對復(fù)雜的系統(tǒng)中,一般都會搭建以Redis等內(nèi)存數(shù)據(jù)庫為中心的session服務(wù),session不再由容器管理,而是由session服務(wù)及內(nèi)存數(shù)據(jù)庫管理。

    5、分布式鎖

    在很多互聯(lián)網(wǎng)公司中都使用了分布式技術(shù),分布式技術(shù)帶來的技術(shù)挑戰(zhàn)是對同一個資源的并發(fā)訪問,如全局ID、減庫存、秒殺等場景,并發(fā)量不大的場景可以使用數(shù)據(jù)庫的悲觀鎖、樂觀鎖來實(shí)現(xiàn),但在并發(fā)量高的場合中,利用數(shù)據(jù)庫鎖來控制資源的并發(fā)訪問是不太理想的,大大影響了數(shù)據(jù)庫的性能。可以利用Redis的setnx功能來編寫分布式的鎖,如果設(shè)置返回1說明獲取鎖成功,否則獲取鎖失敗,實(shí)際應(yīng)用中要考慮的細(xì)節(jié)要更多。

    6、 社交網(wǎng)絡(luò)

    點(diǎn)贊、踩、關(guān)注/被關(guān)注、共同好友等是社交網(wǎng)站的基本功能,社交網(wǎng)站的訪問量通常來說比較大,而且傳統(tǒng)的關(guān)系數(shù)據(jù)庫類型不適合存儲這種類型的數(shù)據(jù),Redis提供的哈希、集合等數(shù)據(jù)結(jié)構(gòu)能很方便的的實(shí)現(xiàn)這些功能。

    7、最新列表

    Redis列表結(jié)構(gòu),LPUSH可以在列表頭部插入一個內(nèi)容ID作為關(guān)鍵字,LTRIM可用來限制列表的數(shù)量,這樣列表永遠(yuǎn)為N個ID,無需查詢最新的列表,直接根據(jù)ID去到對應(yīng)的內(nèi)容頁即可。

    8、消息系統(tǒng)

    消息隊(duì)列是大型網(wǎng)站必用中間件,如ActiveMQ、RabbitMQ、Kafka等流行的消息隊(duì)列中間件,主要用于業(yè)務(wù)解耦、流量削峰及異步處理實(shí)時性低的業(yè)務(wù)。Redis提供了發(fā)布/訂閱及阻塞隊(duì)列功能,能實(shí)現(xiàn)一個簡單的消息隊(duì)列系統(tǒng)。另外,這個不能和專業(yè)的消息中間件相比。

    9、隊(duì)列

    由于redis有l(wèi)ist push和list pop這樣的命令,所以能夠很方便的執(zhí)行隊(duì)列操作。

    redis持久化介紹

  • 由于Redis的數(shù)據(jù)都存放在內(nèi)存中,如果沒有配置持久化,redis重啟后數(shù)據(jù)就全丟失了
  • redis提供兩種方式進(jìn)行持久化:
    第一種:RDB (將Redis中數(shù)據(jù)定時dump到硬盤)
    第二種:AOF (將Reids的操作日志以追加的方式寫入文件)
  • RDB持久化原理

    • RDB持久化是指在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤
    • 實(shí)際操作過程是fork一個子進(jìn)程,先將數(shù)據(jù)集寫入臨時文件,寫入成功后,再替換之前的文件,用二進(jìn)制壓縮存儲

      AOF持久化原理
      AOF持久化以日志的形式記錄服務(wù)器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細(xì)的操作記錄。

    RDB優(yōu)缺點(diǎn)介紹(快照)

    RDB優(yōu)點(diǎn)

    • 整個Redis數(shù)據(jù)庫將只包含一個文件,一旦系統(tǒng)出現(xiàn)災(zāi)難性故障,我們可以非常容易的進(jìn)行恢復(fù)。
    • 性能最大化,它僅需要fork出子進(jìn)程,由子進(jìn)程完成持久化工作,極大的避免服務(wù)進(jìn)程執(zhí)行IO操作了。
    • 相比于AOF機(jī)制,如果數(shù)據(jù)集很大,RDB的啟動效率會更高

    RDB缺點(diǎn)

    • RDB容易丟數(shù)據(jù),因?yàn)橄到y(tǒng)一旦在定時持久化之前出現(xiàn)宕機(jī)現(xiàn)象,此前沒有來得及寫入磁盤的數(shù)據(jù)都將丟失
    • RDB通過fork子進(jìn)程來完成持久化的,如果當(dāng)數(shù)據(jù)集較大時,可能會導(dǎo)致整個服務(wù)器停止服務(wù)幾百毫秒,甚至是1秒鐘

    AOF優(yōu)缺點(diǎn)介紹(鏡像)

    AOF優(yōu)點(diǎn)

    • 數(shù)據(jù)安全性高,Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步
    • 由于該機(jī)制對日志文件的寫入操作采用的是append模式,因此在寫入過程中即使出現(xiàn)宕機(jī)現(xiàn)象,也不會破壞日志文件中已經(jīng)存在的內(nèi)容
    • 如果日志過大,Redis可以自動啟用rewrite機(jī)制。即Redis以append模式不斷的將修改數(shù)據(jù)寫入到老的磁盤文件中
    • AOF包含一個格式清晰、易于理解的日志文件用于記錄所有的修改操作。事實(shí)上,我們也可以通過該文件完成數(shù)據(jù)的重建

    AOF缺點(diǎn)

    • 對于相同數(shù)量的數(shù)據(jù)集而言,AOF文件通常要大于RDB文件,RDB 在恢復(fù)大數(shù)據(jù)集時的速度比 AOF 的恢復(fù)速度要快。
    • AOF在運(yùn)行效率上往往會慢于RDB

    總結(jié)

    以上是生活随笔為你收集整理的Redis的特点持久化的原理及优缺点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。