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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

数据库

Redis-相关概念记录

發(fā)布時(shí)間:2023/12/15 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis-相关概念记录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

Redis內(nèi)部數(shù)據(jù)類型

  • SDS(simple dynamic string)
    通過(guò)SDS來(lái)存儲(chǔ)String,優(yōu)勢(shì):

  • 直接獲取長(zhǎng)度,效率更高;
  • 防止溢出;
  • 空間分配,釋放策略更加高效;
  • 二進(jìn)制安全;
  • 鏈表

  • 字典 字典包含哈希表,哈希表再包含哈希節(jié)點(diǎn)。

  • 自動(dòng)擴(kuò)容或者縮容,采取漸進(jìn)式rehash;
  • 跳表
    只用于有序列表。

  • 整數(shù)集合
    集合鍵的底層實(shí)現(xiàn)之一,可以升級(jí)或者降級(jí)優(yōu)化空間。

  • 壓縮列表
    列表鍵和哈希鍵的底層實(shí)現(xiàn)之一,只包含少量的項(xiàng),均是小整數(shù)值時(shí),采用壓縮列表來(lái)作為底層實(shí)現(xiàn)。

Redis對(duì)象

  • 字符串對(duì)象

  • 編碼:int raw(SDS) embstr;
  • 列表對(duì)象

  • 編碼:ziplist(壓縮列表) linkedlist(鏈表);
  • 哈希對(duì)象

  • 編碼:ziplist(壓縮列表) hashtable(字典);
  • 集合對(duì)象

  • 編碼:intset(整數(shù)集合) hashtable(字典);
  • 有序集合

  • 編碼:ziplist(壓縮列表) skiplist(跳表);

Redis持久化

  • RDB

  • 將內(nèi)存中的數(shù)據(jù)庫(kù)狀態(tài)保存到磁盤當(dāng)中。
  • 方式:SAVE(導(dǎo)致服務(wù)器阻塞) BGSAVE(子線程方式,服務(wù)器不會(huì)阻塞) 配置save參數(shù)設(shè)置自動(dòng)觸發(fā)條件;
  • AOF

  • 通過(guò)保存服務(wù)器執(zhí)行命令的寫來(lái)記錄數(shù)據(jù)庫(kù)狀態(tài)。
  • 步驟:命令追加 文件寫入 文件同步(always everysec no)

Redis事件

  • 文件事件

  • Reactor模型,同時(shí)支持多個(gè)客戶端,所有的事件放入隊(duì)列單線程處理。
  • 時(shí)間事件

  • 類型:定時(shí)時(shí)間,周期性事件;
  • 所有的時(shí)間事件通過(guò)鏈表的形式組成,若是周期任務(wù),處理完成后,新增加事件在鏈表當(dāng)中;

Sentinel

  • 基礎(chǔ)概念

  • 本質(zhì)上是特殊模式下的Redis服務(wù)器;
  • 通過(guò)配置文件制定監(jiān)視的主服務(wù)器;
  • 通過(guò)INFO命令從主服務(wù)器獲取從服務(wù)器;
  • 選舉相關(guān)

  • 與Redis服務(wù)器通信答復(fù)無(wú)效時(shí)判斷為主觀下線;
  • 與其他Sentinel協(xié)商判斷是否客觀下線;
  • 選舉Leader(raft算法),進(jìn)行故障轉(zhuǎn)移;

集群

  • 基礎(chǔ)概念
  • 各個(gè)節(jié)點(diǎn)通過(guò)Gossip協(xié)議傳播;
  • 集群中的數(shù)據(jù)庫(kù)被分為16384個(gè)slot;
  • 節(jié)點(diǎn)只能使用0號(hào)數(shù)據(jù)庫(kù);

事務(wù)

  • 基礎(chǔ)概念
  • 事務(wù)提供一種將多個(gè)命令請(qǐng)求打包,然后一次性,按順序地執(zhí)行多個(gè)命令的機(jī)制;
  • WATCH為樂(lè)觀鎖,若事務(wù)期間,WATCH監(jiān)視的鍵至少有一個(gè)被修改,則事務(wù)失敗;
  • 事務(wù)的ACID
  • 原子性:Redis事務(wù)不支持回滾;
  • 一致性;
  • 隔離性;
  • 耐久性;

研發(fā)規(guī)范

  • Key設(shè)計(jì)
  • key的一個(gè)格式約定: object-type:id:field 。用":"分隔域,用"."作為單詞間的連接, 如" comment:12345:reply.to "。不推薦含義不清的key和特別長(zhǎng)的key。

Redis-Java客戶端

  • Jedis
  • Spring-Data-redis
  • Redisson
  • 內(nèi)存淘汰策略

  • noeviction(默認(rèn)):當(dāng)內(nèi)存使用達(dá)到閾值的時(shí)候,所有引起申請(qǐng)內(nèi)存的命令會(huì)報(bào)錯(cuò)。
  • allkeys-lru:在主鍵空間中,優(yōu)先移除最近未使用的key。
  • volatile-lru:在設(shè)置了過(guò)期時(shí)間的鍵空間中,優(yōu)先移除最近未使用的key。
  • allkeys-random:在主鍵空間中,隨機(jī)移除某個(gè)key。
  • volatile-random:在設(shè)置了過(guò)期時(shí)間的鍵空間中,隨機(jī)移除某個(gè)key。
  • volatile-ttl:在設(shè)置了過(guò)期時(shí)間的鍵空間中,具有更早過(guò)期時(shí)間的 key 優(yōu)先移除。
  • 內(nèi)存使用相關(guān)

  • 如果一個(gè)Redis實(shí)例的內(nèi)存使用率超過(guò)可用最大內(nèi)存 (used_memory > 可用最大內(nèi)存),那么操作系統(tǒng)開始進(jìn)行內(nèi)存與swap空間交換,把內(nèi)存中舊的或不再使用的內(nèi)容寫入硬盤上(硬盤上的這塊空間叫Swap分區(qū)),以便騰出新的物理內(nèi)存給新頁(yè)或活動(dòng)頁(yè)(page)使用;
  • mem_fragmentation_ratio>1:Redis沒(méi)有內(nèi)存回收機(jī)制,如果批量過(guò)期數(shù)據(jù)或者 刪除數(shù)據(jù),內(nèi)存的碎片可能就比較大;
  • mem_fragmentation_ratio<1:一般發(fā)生在內(nèi)存緊張的服務(wù)器,就是本身內(nèi)存剩余不 多,redis申請(qǐng)不到足夠的內(nèi)存,這樣就會(huì)使用swap;
  • 分片

    • 優(yōu)勢(shì)
    • 更多的內(nèi)存;
    • 更多的cpu,帶寬;
    • 劣勢(shì)
    • 不能直接的做多鍵相關(guān)的操作;
    • 涉及多鍵的事務(wù)不支持;
    • 分片是按照Key來(lái)劃分,對(duì)單Key,但是value數(shù)據(jù)量很大的場(chǎng)景無(wú)效;
    • 擴(kuò)容有一定難度;
    • 實(shí)現(xiàn)方式
    • 客戶端分片;
    • 代理分片(Twemproxy)
    • 查詢路由(Redis cluster)

    高可用

  • 主備切換:Sentinel
  • 分片采用:tewmproxy
  • keepalived為tewmproxy提供VIP
  • 直接使用Redis Cluster
  • 其他公司提供:Codis
  • 應(yīng)用場(chǎng)景

    • Redis存儲(chǔ)會(huì)話
    • 使用容器拓展實(shí)現(xiàn);
    • 自定義會(huì)話管理;
    • 使用框架的會(huì)話管理工具;

    參考列表:

  • Redis內(nèi)存優(yōu)化
  • Redis 高可用架構(gòu)最佳實(shí)踐
  • 轉(zhuǎn)載于:https://my.oschina.net/u/3052784/blog/1608747

    總結(jié)

    以上是生活随笔為你收集整理的Redis-相关概念记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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