中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站開發(fā)自學還是培訓市場營銷計劃

網(wǎng)站開發(fā)自學還是培訓,市場營銷計劃,wordpress圖片上傳地址,數(shù)字選用平臺介紹1.NOSQL、Redis概述,通用命令,redis五大數(shù)據(jù)類型,三大特殊數(shù)據(jù)類型 NOSQL概述: (NOT ONLY SQL-不僅僅是SQL),泛指非關系型數(shù)據(jù)庫,為解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應用問題 常見no…

??? 1.NOSQL、Redis概述,通用命令,redis五大數(shù)據(jù)類型,三大特殊數(shù)據(jù)類型

????????????? NOSQL概述:

???????????????????? (NOT ONLY SQL-不僅僅是SQL),泛指非關系型數(shù)據(jù)庫,為解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應用問題

???????????????????? 常見nosql:redis,hbase。

???????????????????? 和關系型數(shù)據(jù)的對比區(qū)別:數(shù)據(jù)之間沒有關聯(lián)關系,數(shù)據(jù)存儲在內(nèi)存中,操作數(shù)據(jù)相對較快。關系型數(shù)據(jù)庫數(shù)據(jù)之間存在關聯(lián)關系,數(shù)據(jù)存儲在磁盤中,操作數(shù)據(jù)非常耗時。

???????????????????? 優(yōu)點:成本低、查詢速度快、支持多種數(shù)據(jù)格式(基本數(shù)據(jù)類型、集合、對象、圖片、文檔等格式)、擴展性相對關系型數(shù)據(jù)庫較好。

???????????????????? 非關系型數(shù)據(jù)庫優(yōu)勢:復雜查詢較方便,事務的支持導致安全性很高。

???????????????????? 總結(jié):關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫并非對立而是互補的關系,從而彌補對方的劣勢。一般將數(shù)據(jù)存儲在關系型數(shù)據(jù)庫中,非關系型數(shù)據(jù)庫中備份關系型數(shù)據(jù)庫的數(shù)據(jù)(熱點數(shù)據(jù)、高頻訪問且不常修改的數(shù)據(jù))。

???????????????????? 主流的nosql:

?????? ???????????????????? key-value存儲數(shù)據(jù)庫:redis。典型用于內(nèi)容緩存,處理大量數(shù)據(jù)的高訪問負載

??????????????????????????? 列存儲數(shù)據(jù)庫:Hbase。典型用于分布式的文件系統(tǒng)

??????????????????????????? 文檔型數(shù)據(jù)庫:Mongdb。典型用于web應用

??????????????????????????? 圖形數(shù)據(jù)庫:Neo4J。典型用于社交網(wǎng)絡

????????????? Redis概述:

???????????????????? C語言開發(fā)的高性能鍵值對數(shù)據(jù)庫,在內(nèi)存中就是一個Map集合。支持多種鍵值數(shù)據(jù)類型。key為字符串,value可是任意類型。

???????????????????? value類型分類:

??????????????????????????? 字符串類型-String:Map<String,String>

?????? ???????????????????? 散列類型-hash:Map<String,Map<String,String>>

??????????????????????????? 列表類型-list:Map<String,List<String>> 數(shù)據(jù)可重復

??????????????????????????? 集合類型-set:Map<String,Set<String>>?? 數(shù)據(jù)不可重復

??????????????????????????? 有序集合類型-sortedset:Map<String,sortedset<String>> 數(shù)據(jù)不可重復,支持排序

???????????????????? 應用場景:緩存、聊天室好友在線列表、任務隊列(秒殺、搶購、12306搶票)、應用排行榜、網(wǎng)站訪問統(tǒng)計、數(shù)據(jù)過期處理、分布式集群架構(gòu)中session分離

???????????????????? 相關指令

??????????????????????????? 數(shù)據(jù)庫操作指令:

?????????????????????????????????? 啟動redis,默認16個庫(編號從0至15),select 編號 選擇指定庫

?????????????????????????????????? 清空當前庫:FLUSHDB

?????????????????????????????????? 清空全部庫:FLUSHALL

?????????????????????????????????? 客戶端顯示中文:./redis-cli -p 700 --raw

??????????????????????????? 操作key相關指令:

?????????????????????????????????? DEL KEY[KEY...] 刪除單個或多個Key,返回刪除數(shù)量,不存在的key忽略

?????????????????????????????????? EXISTS KEY;判斷key是否存在,存在返回1,否則返回0

?????????????????????????????????? EXPIRE KEY seconds;為key設置生存時間,秒為單位,生存時間為0自動刪除。成功返回1

?????????????????????????????????? KEYS PATTERN;查找符合pattern的key

?????????????????????????????????? MOVE KEY DB;將Key移動到指定db中

?????????????????????????????????? PEXPIRE KEY milliseconds;為key設置生存時間,毫秒為單位。成功返回1,否則返回0

?????????????????????????????????? PEXPIREAT KEY milliseconds-timestap;為Key設置生存時間,以毫秒為單位設置過期的時間戳

?????????????????????????????????? TTL KEY ;以秒為單位,返回指定key的剩余存活時間

?????????????????????????????????? PTTL KEY ;以毫秒為單位,返回指定key的剩余存活時間

?????????????????????????????????? RANDOMKEY;隨機返回一個key

?????????????????????????????????? RENAME KEY NEWKEY;將Key命名修改為newkey

?????????????????????????????????? TYPE KEY ;返回KEY對應VALUE的類型。none(key不存在),string,list(列表),set(集合),zset(有序集合),hash(哈希表)

???????????????????? 5種數(shù)據(jù)類型

??????????????????????????? String:基礎存儲類型,在redis中二進制安全,存入和取出數(shù)據(jù)相同,最大容納數(shù)據(jù)長度512M。

?????????????????????????????????? 常用命令:

????????????????????????????????????????? set key value;例如:set company "sunny";key存在則進行覆蓋,返回 OK

????????????????????????????????????????? get key;返回key對應的值

????????????????????????????????????????? del key;刪除 key

??????????????????????????? 哈希類型-hash:適合存儲值對象信息,value是一個鍵值對,key 無序

?????????????????????????????????? 常用命令

????????????????????????????????????????? hset key field value 為指定key設置field/value鍵值對。給同一個field設置,后者會覆蓋前者

????????????????????????????????????????? hmset key1 field/value key2 field/value 為多個key設定field/value

????????????????????????????????????????? hget key field 返回指定Key中field的值

????????????????????????????????????????? hmget key field1 field2 field3 返回指定Key中多個field的值

????????????????????????????????????????? hdel key field [field … ] 刪除1個或多個字段,返回被刪除字段的個數(shù)

????????????????????????????????????????? hgetall key 獲取Key的所有數(shù)據(jù)

??????????????????????????? 列表類型-list:有序可重復,類似雙端隊列的數(shù)據(jù)結(jié)構(gòu),可作為redis實現(xiàn)消息隊列的數(shù)據(jù)結(jié)構(gòu)

?????????????????????????????????? 常用命令:

????????????????????????????????????????? lpush key values[value1 value2…] 在指定key關聯(lián)的list頭部添加這些元素,如果key不存在,則新建元素。添加成功,返回元素個數(shù)

????????????????????????????????????????? lpop key 返回key關聯(lián)鏈表的頭部元素

????????????????????????????????????????? rpop key 從尾部彈出元素

????????????????????????????????????????? lrange key start end 輸出該key的所有數(shù)據(jù)。示例:lrange key 0 10;輸出key對應list的索引0至索引10的數(shù)據(jù),即前11個元素

??????????????????????????? 列表類型-set(無序且不可重復)

?????????????????????????????????? 常用命令:

????????????????????????????????????????? sadd key values[value1、value2…] 向key對應set中添加數(shù)據(jù)

????????????????????????????????????????? smembers key 顯示key對應set中所有數(shù)據(jù)

????????????????????????????????????????? srem key members[member1、member2…] 刪除key對應set中指定數(shù)據(jù)

??????????????????????????? 有序列表類型-zset(sortedSet,可排序,可保證不重復),value中的每個元素都會關聯(lián)一個double類型的份數(shù),redis中正式通過分數(shù)來為元素實現(xiàn)從小到大的排序

?????????????????????????????????? 特點:可排序的set集合,相當于java中的treeSet

?????????????????????????????????? 常用命令:

????????????????????????????????????????? zadd key values[value1、value2…] 向key對應set添加元素

????????????????????????????????????????? zrange key start end? 通過索引區(qū)間返回指定范圍內(nèi)的元素,升序

????????????????????????????????????????? zrevrange key start end 通過索引區(qū)間返回指定范圍內(nèi)的元素,降序

????????????????????????????????????????? zrange key start end? [withscores]? 通過索引區(qū)間返回指定范圍內(nèi)的元素及其對應score數(shù)字,升序

????????????????????????????????????????? zrevrange key start end [withscores] 通過索引區(qū)間返回指定范圍內(nèi)的元素及其對應score數(shù)字,降序

???????????????????? redis通用命令

??????????????????????????? key pattern ;pattern表示格式,作用是獲取與pattern匹配的Key。* 表示任意1個或多個字符,?表示任意1個字符

??????????????????????????? exists key ;判斷key是否存在,存在返回1 否則返回0

??????????????????????????? type key ;返回key對應的value數(shù)據(jù)類型。none、string、list、set、zset、hash

??????????????????????????? expire key time;設置key的存活時間

???????????????????? 3種特殊數(shù)據(jù)類型

??????????????????????????? Hyperloglog 基數(shù)統(tǒng)計算法,類似于set數(shù)據(jù)類型,允許容錯,使用此類型。不允許容錯使用set即可

??????????????????????????? Bitmap 位存儲,操作二進制位來記錄。

??????????????????????????? Geospatial 地理位置

??? 2.redis持久化機制、RDB持久化、AOF持久化

????????????? REDIS持久化概述:

???????????????????? redis高性能原因是因為將數(shù)據(jù)保存在內(nèi)存中,為了保證redis重啟后數(shù)據(jù)不丟失,將數(shù)據(jù)從內(nèi)存保存到硬盤中,過程稱為持久化。

???????????????????? 持久化支持RDB和AOF兩種方式,可以單獨使用1種,也可以將2種進行結(jié)合使用。

???????????????????? 默認支持RDB持久化,無序配置。此機制是在固定時間間隔將內(nèi)存的數(shù)據(jù)集快照寫入磁盤。

???????????????????? AOF持久化以日志的形式記錄服務器所處理的寫操作,在redis啟動之初會讀取此文件來重建redis數(shù)據(jù)庫。以保證重啟后數(shù)據(jù)完整。

???????????????????? 持久化可通過配置來禁用

???????????????????? 可同時使用RDB和AOF持久化

????????????? RDB持久化,也稱快照(Snapshot)

???????????????????? RDB持久化特點:將內(nèi)存種數(shù)據(jù)以一定時間間隔,將內(nèi)存數(shù)據(jù)寫入硬盤中,默認持久化的方式,保存的文件以.rdb為后綴

???????????????????? 快照生成方式:客戶端方式(BGSAVE和SAVE指令)、服務器配置自動觸發(fā)

??????????????????????????? 客戶端方式之BGSAVE操作(并行操作):客戶端使用BGSAVE命令創(chuàng)建快照,當redis服務器收到客戶端發(fā)送的BGSAE命令,服務器會調(diào)用fork創(chuàng)建1個子線程,

???????????????????? ?????????????????????????????????????????????????????????????? 子線程負責快照寫入磁盤,主線程繼續(xù)處理命令請求??

??????????????????????????? 客戶端方式之SAVE操作(串行操作):客戶端使用SAVE命令創(chuàng)建快照,redis服務器收到客戶端發(fā)送的SAVE命令,服務器在快照完畢之前不會響應其他命令。此模式不常用

??????????????????????????? 配置自動觸發(fā):和Mysql的redo機制類似。如果在redis.conf種設置了save配置選項,redis會在選項滿足之后自動觸發(fā)一次BGSAVE命令,如果設置多個save配置選項,

???????????????????????????????????????????????? 其中一個滿足,也會執(zhí)行一次BGSAVE命令

??????????????????????????? 服務器接受客戶端shutdown指令:服務器收到客戶端的shutdown指令后,會執(zhí)行一個save命令,阻塞所有客戶端,不再執(zhí)行任何客戶端命令,并再save命令執(zhí)行完畢后關閉服務器

???????????????????? 配置生成快照名稱和位置:

??????????????????????????? 修改生成快照名稱:dbfilename dump.rdb

??????????????????????????? 修改生成位置 dir./

???????????????????? RDB(快照)持久化的缺點:

??????????????????????????? 無法保證系統(tǒng)高可用性質(zhì),即無法避免最大程度的數(shù)據(jù)丟失。因為一旦在持久化之前出現(xiàn)服務宕機,未來得及保存進入磁盤的數(shù)據(jù)就會丟失

????????????? AOF只追加日志文件

???????????????????? 特點:可將客戶端執(zhí)行的所有set命令記錄到日志文件中,AOF持久化會將被執(zhí)行的寫命令保存到AOF文件的末尾,以此來記錄數(shù)據(jù)變化;

?????????????????????????????????? 恢復內(nèi)存數(shù)據(jù),只需要將AOF文件中包含的寫命令從頭到尾執(zhí)行一次即可;

?????????????????????????????????? redis服務器啟動之初會讀取該文件,來重新構(gòu)建redis數(shù)據(jù)庫,從而保證數(shù)據(jù)完整

???????????????????? 開啟AOF持久化:

??????????????????????????? redis.conf默認配置中的AOF持久化機制是關閉的,需要配置中開啟。

??????????????????????????? 開啟步驟:修改 appendonly yes 開啟持久化;修改appendfilename "appendonly.aof"; 指定生成文件名稱

???????????????????? 日志追加頻率:

??????????????????????????? always:每次寫操作,都寫入磁盤,可最大程度減少數(shù)據(jù)的丟失,但是此同步策略需要對磁盤大量操作,因此redis處理速度會受到磁盤性能的限制。謹慎使用

??????????????????????????? everysec:每秒執(zhí)行一次同步,顯式的將多個命令存入磁盤。使用此方式和不使用此方式時性能相差無幾,同時每秒一次即便系統(tǒng)崩潰也只會丟失1S的數(shù)據(jù)。 推薦使用

??????????????????????????? no:由操作系統(tǒng)決定何時同步。不會對性能帶來影響,但是會丟失不定量數(shù)據(jù)。不推薦

???????????????????? 修改同步頻率:通過 appendfsync always/everysec/no 指定

????????????? AOF文件的重寫

???????????????????? AOF(日志文件)的缺點:持久化文件越來越大,為了壓縮AOF持久化文件,redis提供了AOF重寫(ReWriter)機制

???????????????????? AOF重寫可在一定程度上減小AOF文件的體積

???????????????????? 觸發(fā)重寫方式

??????????????????????????? 客戶端方式觸發(fā)重寫:執(zhí)行 BGREWRITEAOF 命令,不會阻塞redis服務

??????????????????????????? 服務端方式配置自動重寫:修改redis.conf文件中的 auto-aof-rewrite-percentage和auto-aof-rewrite-min-size。

?????????????????????????????????? 例如:auto-aof-rewrite-percentage值為100和auto-aof-rewrite-min-size 64mb。在開啟AOF持久化時,當AOF文件大于64M,并且AOF文件比上次重寫后體積大了至少幾倍,自動觸發(fā)

???????????????????? 重寫原理:將內(nèi)存中的數(shù)據(jù)庫用命令的方式重寫生成了一個AOF文件,來替換原來的文件

???????????????????? 重寫流程:

????????????? 持久化總結(jié)

???????????????????? RDB和AOF兩種方案可同時使用,也可單獨使用,也可都不使用。使用那種取決于用戶的數(shù)據(jù)和應用決定

???????????????????? 無論是使用RDB還是AOF,持久化文件都是保存在磁盤的,有必要除了持久化外,還應該對持久化文件進行備份(最好備份在多個地方)

???????????????????? RDB和AOF的選擇問題:

??????????????????????????? 對數(shù)據(jù)非常敏感,選擇AOF。但是文件體積較大,恢復速度較慢

??????????????????????????? 數(shù)據(jù)呈現(xiàn)階段有效性,選擇rdb,可做到階段內(nèi)數(shù)據(jù)無丟失,恢復速度較快。但是利用RDB實現(xiàn)緊湊的持久化會使得redis性能降低很多

??????????????????????????? 總之如果不能承受數(shù)分鐘以內(nèi)的數(shù)據(jù)丟失,對業(yè)務數(shù)據(jù)非常敏感選擇AOF;可以承受數(shù)分鐘以內(nèi)的數(shù)據(jù)丟失,且追求大數(shù)據(jù)集的恢復速度,選擇RDB。

??????????????????????????? 災難恢復選用RDB

??????????????????????????? 雙重保險策略,同時開啟AOF和RDB,重啟后先使用AOF進行數(shù)據(jù)恢復,降低丟失數(shù)據(jù),兩者同時開啟,數(shù)據(jù)恢復時會選擇忽略RDB,選擇AOF進行恢復,從而避免數(shù)據(jù)不一致或重復問題

??? 3.java操作redis、jedis連接池、使用redis緩存不常修改的數(shù)據(jù)

????????????? jedis基本使用:

???????????????????? redis不僅可通過命令操作,主流語言都有客戶端支持。官方推薦java客戶端使用jedis和redisson。企業(yè)中jedis使用居多

???????????????????? 實現(xiàn)步驟:引入jedis依賴;創(chuàng)建jedis對象;調(diào)用jedis對方的方法實現(xiàn)對string、list、set、zset、hash的操作

????????????? jedis連接池的基本概念:jedis資源的創(chuàng)建和消費非常消耗性能,jedis提供了池化技術,jedispool在創(chuàng)建時初始化一些連接資源存儲到池中,使用jiedis連接資源時間無需創(chuàng)建,從連接池中獲取,使用完畢后將jedis還給連接池,供其他請求使用。使用GenericObjectPoolConfig 和JedisPool來創(chuàng)建連接池

??? 4.spring boot整合redis核心api

????????????? springboot data redis 提供了stringredistemplate和redistemplate,stringredistemplate是redistemplate的子類。

????????????? 區(qū)別在于stringredistemplate的key和value只能是string,而redistemplate的key和value可以是object任意類型的數(shù)據(jù)。

????????????? 使用redistemplate默認是將對象序列化到redis中,因此放入的對象必須實現(xiàn)對象序列化接口 serializable

????????????? 實現(xiàn)步驟:引入依賴;配置連接;使用redistemplate進行操作

??? 5.redis事務、watch鎖、redis實現(xiàn)分布式鎖、數(shù)據(jù)的刪除策略、淘汰策略

????????????? redis事務

???????????????????? 定義:一系列預定義命令保證成一個整體(隊列),執(zhí)行時一次性按照添加順序依次執(zhí)行,中途不會中斷或干擾。

???????????????????? 本質(zhì):一組命令的集合

???????????????????? 沒有隔離級別的概念,所有命令在事務中并未直接執(zhí)行,只有在執(zhí)行exec命令時才會執(zhí)行

???????????????????? redis單條命令保證原子性,事務不保證原子性

???????????????????? 執(zhí)行步驟:開啟事務(multi),執(zhí)行操作,提交事務(exec)

???????????????????? 事務操作

??????????????????????????? 開啟事務 multi (設定事務開啟位置,后續(xù)所有指令均加入到事務中)

??????????????????????????? 取消事務 discard 終止當前事務的定義,在multi之后,exec之前

??????????????????????????? 執(zhí)行事務 exec 設定事務的結(jié)束位置,同時執(zhí)行事務,與multi成對出現(xiàn)??杀WC事務的一致性

??????????????????????????? 注意事項:定義事務中,命令存在語法錯誤,則事務中所有命令都不會執(zhí)行;

??????????????????????????????????????? 如果命令格式語法正確,但是無法正確執(zhí)行,則正確的命令會執(zhí)行,運行錯誤的命令不會執(zhí)行(例如對list執(zhí)行incr),已經(jīng)執(zhí)行完畢的命令對應數(shù)據(jù)不會自動回滾,需要自行回滾。

???????????????????? watch鎖:

??????????????????????????? 問題:線程1監(jiān)聽某個key,當事務還未執(zhí)行完,事務2操作了這個key,watch會通知線程1事務失敗

??????????????????????????? 基于特定條件的事務執(zhí)行:假如對已售空的商城進行補貨,多個采購員都可以進行,為了避免數(shù)據(jù)重復操作,所以在操作某一數(shù)據(jù)前,先鎖定要操作的數(shù)據(jù),一旦發(fā)生變化,終止當前事務

??????????????????????????? 基于特定條件的事務執(zhí)行(鎖):對key添加監(jiān)視鎖,在執(zhí)行exec操作前,如果Key發(fā)生了變化,則終止事務執(zhí)行。watch key1[kye2...].取消所有key的監(jiān)視 unwatch;

???????????????????????????

??????????????????????????? watch鎖操作:

?????????????????????????????????? 悲觀鎖:認為什么時候都會出問題,無論做什么都會加鎖

?????????????????????????????????? 樂觀鎖:認為什么時候都不會出現(xiàn)問題,所以不會加鎖,更新數(shù)據(jù)時候判斷一下,在此期間是否有人更改此數(shù)據(jù)(獲取version,更新的時候比較version)

????????????? redis中數(shù)據(jù)的刪除策略

???????????????????? 定時刪除、惰性刪除、定期刪除

????????????? 淘汰策略 ????

??? 6.mybatis自身本地緩存結(jié)合redis實現(xiàn)分布式緩存????? ??

????????????? redis實現(xiàn)分布式緩存

???????????????????? 緩存:計算機內(nèi)存中的一段數(shù)據(jù)

???????????????????? 內(nèi)存中數(shù)據(jù)特點:讀寫快、斷電立即丟失

???????????????????? 緩存解決的問題:提高網(wǎng)站吞吐量,網(wǎng)絡運行效率快,解決數(shù)據(jù)庫訪問壓力

???????????????????? 數(shù)據(jù)庫中極少修改的數(shù)據(jù)適合使用緩存,更多用于數(shù)據(jù)查詢

???????????????????? 本地緩存和分布式緩存的區(qū)別:本地緩存保存在應用服務器內(nèi)存中(mybatis的一級和二級緩存就是本地緩存);分布式緩存存儲在應用服務器之外的數(shù)據(jù)

???????????????????? 集群:將一種服務創(chuàng)建多個節(jié)點,放在一起共同對系統(tǒng)提供服務的過程稱為集群

???????????????????? 分布式:多個不同服務集群共同對系統(tǒng)提供服務的系統(tǒng)稱為分布式系統(tǒng)。

???????????????????? 利用mybatis自身本地緩存結(jié)合redis緩存實現(xiàn)分布式緩存:todo

??? 7.主從復制簡介、工作流程、常見問題

????????????? 主從復制簡介

???????????????????? redis集群實現(xiàn)高可用:避免單機redis服務故障,準備多臺服務器,互相連通,將數(shù)據(jù)復制多個副本保存在多個服務器上,連接在一起,并保證數(shù)據(jù)式同步的。

???????????????????? 即便其中1臺服務宕機,其他服務器依然可以繼續(xù)提供服務,實現(xiàn)redis的高可用,同時實現(xiàn)數(shù)據(jù)冗余備份。

???????????????????? 主從復制定義:即將master中的數(shù)據(jù)及時、有效的復制到slave中.master支持讀寫,在進行寫時間,將出現(xiàn)變化的數(shù)據(jù)自動同步至slave。

???????????????????? 主從復制作用:

?????????????????????????????????? 讀寫分離:master負責寫,slave負責讀取,提高服務器的讀寫負載能力

?????????????????????????????????? 負載均衡:基于主從結(jié)構(gòu),配合讀寫分離,由slave分擔master負載,并根據(jù)需求變化,改變slave數(shù)量,通過多個從節(jié)點分擔數(shù)據(jù)讀取負載,大大提高了redis服務器并發(fā)量和吞吐量

?????????????????????????????????? 故障恢復:master出現(xiàn)問題,slave提供服務,實現(xiàn)快速的故障恢復

?????????????????????????????????? 數(shù)據(jù)冗余:實時數(shù)據(jù)熱備份,持久化之外的一種數(shù)據(jù)冗余方式,slava和master數(shù)據(jù)同步

?????????????????????????????????? 高可用基石:基于主從機制,構(gòu)建哨兵模式和集群,實現(xiàn)redis高可用方案

????????????? 主從復制流程

???????????????????? 建立連接:準備階段,slave連接master。

??????????????????????????? 連接的三種方式:

?????????????????????????????????? 客戶端發(fā)送命令:slaveof masterip masterport;

?????????????????????????????????? 驅(qū)動服務器參數(shù):redis-server -slaveof masterip masterport

?????????????????????????????????? 服務器配置:slaveof masterip masterport

??????????????????????????? 斷開連接:slaveof no one;斷開連接后之前接受數(shù)據(jù)不會刪除,只是不在接收新的master數(shù)據(jù)????

???????????????????? 數(shù)據(jù)同步: master數(shù)據(jù)同步slave

???????????????????? 命令傳播:master后續(xù)執(zhí)行寫入操作,將數(shù)據(jù)同步slave

??? 8.哨兵機制Sentinel、哨兵原理

????????????? 哨兵機制sentinel

???????????????????? 哨兵概念:是redis的高可用性解決方案,由1個或多個sentinel實例構(gòu)成的sentinel系統(tǒng)可監(jiān)視多個主服務器,以及這些主服務器下的所有子服務器。

??????????????????????????? 當被監(jiān)視的主服務器下線時,自動將下線主服務器中的某個從服務器升級為新的主服務器。簡單來說哨兵就是帶有自動故障轉(zhuǎn)移功能的主從架構(gòu)。

??????????????????????????? 哨兵是一個分布式系統(tǒng),用于對主從結(jié)構(gòu)中的每臺服務器進行監(jiān)控,當master出現(xiàn)故障時,選擇新的master,并將所有slave連接到新的master

???????????????????? 哨兵作用

??????????????????????????? 監(jiān)控:不斷檢查master和slave是否正常運行,master存活檢測,master和slave運行情況檢測

??????????????????????????? 通知:當被監(jiān)控的服務器出現(xiàn)問題時,向其他(哨兵、客戶端)發(fā)送通知

??????????????????????????? 自動故障轉(zhuǎn)移:如果master宕機,斷開master和slave的連接,從slave中選取一個作為新的master,將其他slave和新的master建立連接,并告知客戶端新的master地址

??????????????????????????? 注意:哨兵也是一臺服務器,只是不提供服務。通常哨兵配置數(shù)量為單數(shù)。(避免選舉master同票)

????????????? 啟動哨兵機制?????

???????????????????? 配置多個哨兵:將redis中的sentinel.conf拷貝2份,在sentinel.conf中修改端口,以及設置master的端口地址,最后通過 redis-sentinel sentinel-端口號.conf即可啟動哨兵

????????????? 哨兵機制原理

???????????????????? 主從切換:哨兵在主從切換中經(jīng)歷了 監(jiān)控、通知、故障轉(zhuǎn)移 3個階段。

???????????????????? 監(jiān)控階段:啟動哨兵服務之后,哨兵之間會互相監(jiān)控,包括master及master下所有的slave節(jié)點信息。多個哨兵之間可相互通信,之間通過發(fā)布訂閱來互相通知

???????????????????? 通知階段:哨兵之間相互通知,哨兵通知客戶端

???????????????????? 故障轉(zhuǎn)移階段:某個哨兵向master服務器發(fā)送指令,此時master沒反應,也拿不到信息,哨兵意識到master宕機,將此消息告知另外2個哨兵,另外兩哨兵也向master發(fā)送請求,也得不到響應,此時master確定下線,隨后多個哨兵中會選出一個領頭的哨兵將master清楚,并在slave中選出一個新的master,將slave切換為新的master

??? 9.redis集群原理、緩存預熱、緩存擊穿、緩存穿透、緩存雪崩的解決方案

????????????? 集群架構(gòu)

???????????????????? 集群架構(gòu)概念

??????????????????????????? 概念產(chǎn)生背景:業(yè)務發(fā)展過程中遇到的瓶頸。redis提供服務OPS可達到10萬/S,當前業(yè)務ops已達到10萬/s;內(nèi)存單機容量為256G,當前業(yè)務需求內(nèi)存容量為1T。使用集群可解決上述問題

??????????????????????????? 集群:將同一個服務的多個節(jié)點放在一起,共同對系統(tǒng)提供服務的過程稱為集群。換言之集群就是將若干臺網(wǎng)絡連接起來,并提供統(tǒng)一的管理方式,對外呈現(xiàn)單機的服務效果。

??????????????????????????? 分布式:有多個不同服務集群共同對系統(tǒng)提供服務的系統(tǒng)稱為分布式系統(tǒng)

???????????????????? 集群架構(gòu)作用:

??????????????????????????? 分散單臺服務器的訪問壓力,實現(xiàn)負載均衡

??????????????????????????? 分散單臺服務器的存儲壓力,實現(xiàn)可擴展性

??????????????????????????? 降低單臺服務宕機帶來的宕機災難

???????????????????? redis集群原理

??????????????????????????? 所有redis節(jié)點彼此互聯(lián),通過二進制協(xié)議優(yōu)化傳輸速度和帶寬,每個redis節(jié)點都包含自己的master和slave,

??????????????????????????? 集群中節(jié)點宕機是集群中超過半數(shù)的節(jié)點檢測失效時才失效

??????????????????????????? 客戶端只需要連接集群中任意一個節(jié)點即可

??????????????????????????? 客戶端執(zhí)行set命令時,會通過CRC16算法,計算出其哈希槽的位置,根據(jù)該位置存儲到對應的node節(jié)點。執(zhí)行get操作時,會根據(jù)哈希槽的位置,去指定節(jié)點內(nèi)讀取數(shù)據(jù)。

??????????????????????????? 故障轉(zhuǎn)移將宕機的master節(jié)點的哈希槽由選出來的slave來接管,不會新創(chuàng)建哈希槽

????????????? redis集群搭建

???????????????????? https://blog.csdn.net/m0_37989980/article/details/107778257 二

????????????? redis企業(yè)解決方案

???????????????????? 緩存預熱

??????????????????????????? 定義:系統(tǒng)啟動前,提前將相關的緩存數(shù)據(jù)直接加載到緩存系統(tǒng),避免用戶先查詢數(shù)據(jù)庫,再將數(shù)據(jù)緩存的問題!

??????????????????????????? 解決問題:解決用戶請求先查詢數(shù)據(jù)庫,再將數(shù)據(jù)緩存的問題

??????????????????????????? 作用:用戶直接查詢事先被預熱的緩存數(shù)據(jù),加快查詢速度

??????????????????????????? 解決方案:

?????????????????????????????????? 統(tǒng)計訪問頻率較高的熱點數(shù)據(jù),并將統(tǒng)計數(shù)據(jù)分類,根據(jù)級別排序,優(yōu)先加載級別較高的熱點數(shù)據(jù),熱點數(shù)據(jù)主從預熱

?????????????????????????????????? 腳本程序固定觸發(fā)腳本預熱

???????????????????? 緩存雪崩

??????????????????????????? 定義:同一時間大面積的緩存失效,后面的請求都會直接請求數(shù)據(jù)庫,造成數(shù)據(jù)庫短時間內(nèi)接收大量請求而崩潰

??????????????????????????? 后果:數(shù)據(jù)庫服務器崩潰

??????????????????????????? 原因:較短時間內(nèi),緩存中較多的key集中過期

??????????????????????????? 解決方案(道):

?????????????????????????????????? 更多的頁面靜態(tài)化處理(模板+動態(tài)數(shù)據(jù))、構(gòu)建多級緩存架構(gòu)、針對慢SQL進行執(zhí)行計劃分析,進而優(yōu)化SQL、

?????????????????????????????????? 限流降級短時間內(nèi)犧牲用戶體驗,限制一部分請求,降低應用服務器壓力,請求低速運轉(zhuǎn)后再逐步放開訪問

??????????????????????????? 解決方案(術):

?????????????????????????????????? 數(shù)據(jù)有效期策略調(diào)整,根據(jù)業(yè)務有效期進行分類錯峰,過期時間使用固定時間+隨機值的方式,稀釋集中過期的key

?????????????????????????????????? 超熱數(shù)據(jù)使用永久key

???????????????????? 緩存擊穿

??????????????????????????? 定義:緩存中沒有但數(shù)據(jù)庫中有的數(shù)據(jù),一般是緩存時間到期,此時大量并發(fā)請求同一條數(shù)據(jù),緩存中沒有,查詢數(shù)據(jù)庫,從而造成數(shù)據(jù)庫崩潰

??????????????????????????? 原因:緩存中某一個熱點key過期,該Key訪問量巨大,多個請求都壓在這個Keys上,但是均為命中,redis短時間內(nèi)發(fā)起了大量對數(shù)據(jù)庫中同一數(shù)據(jù)的訪問

??????????????????????????? 解決方案(術):

?????????????????????????????????? 設置熱點數(shù)據(jù)永不過期、現(xiàn)場調(diào)整Key的過期時間、后臺定時刷新熱點key有效期

???????????????????? 緩存穿透(布隆過濾器解決)

??????????????????????????? 定義:緩存和數(shù)據(jù)庫中都沒有的數(shù)據(jù),導致所有請求都落在數(shù)據(jù)庫上,造成數(shù)據(jù)庫短時間接到大量請求而崩掉

??????????????????????????? 示例:例如數(shù)據(jù)庫及緩存中的數(shù)據(jù)都是從id為0開始自增,有人惡意請求id=-1的數(shù)據(jù),即緩存穿透

??????????????????????????? 解決方案:

?????????????????????????????????? 接口層增加校驗,如用戶鑒權(quán)校驗,id基礎校驗,小于等于0的直接攔截

?????????????????????????????????? 緩存和數(shù)據(jù)庫中都沒取到,可以設置為key-null,有效期短一點,30秒左右,可防止用戶針對同一個key進行暴力攻擊

?????????????????????????????????? 使用布隆過濾器,判斷請求的key是否存在

?????????????????????????????????? 布隆過濾器:

????????????????????????????????????????? 定義:是一個很長的二進制向量(bit數(shù)組)和一系列哈希函數(shù)(hash),用于檢索一個元素是否在一個集合中。

????????????????????????????????????????? 優(yōu)點:因為基于位數(shù)組和哈希算法,空間效率和查詢時間遠超一般算法

????????????????????????????????????????? 缺點:有一定的誤識別率和刪除困難,但是可以通過增加位數(shù)組大小和hash函數(shù)來降低誤識別率(無法避免)

????????????????????????????????????????? 添加數(shù)據(jù)過程:初始化之后,位數(shù)組中值都為0,當增加變量,會通過多個hash函數(shù)將元素映射到位數(shù)組中各個位上,將對應位置設置為1

????????????????????????????????????????? 查詢數(shù)據(jù)過程:通過多個hash函數(shù)將元素映射到位數(shù)組中各個位上,如果各個位都是1,則元素可能存在,但如果其中有位不為1,則元素一定不存在

???????????????????? 緩存降級

??????????????????????????? 定義:流量驟增,造成響應速度較慢,可對非核心緩存業(yè)務進行降級

??????????????????????????? 目的:保證核心服務可用。有些服務無法降級(如加入購物車、結(jié)算)

??????????????????????????? 服務降級目的:防止redis故障,導致數(shù)據(jù)庫一起發(fā)生雪崩問題,因此可對不重要的緩存數(shù)據(jù),采用服務降級策略。

??????????????????????????????????????????????????????? 例如redis出現(xiàn)問題,不去數(shù)據(jù)庫查詢數(shù)據(jù),而是直接返回默認值(兜底默認值)

??? 10.布隆過濾器解決緩存穿透問題

????????????? 人工智能學習網(wǎng)站:https://www.captainai.net/itcoke/

????????????? 目的:redis實現(xiàn)布隆過濾器

????????????? 使用場景:準確判斷某個數(shù)據(jù)是否在大數(shù)據(jù)集合中,并且不占用內(nèi)存

????????????? 簡介:一種數(shù)據(jù)結(jié)構(gòu),一串很長的二進制向量組成,可看作一個二進制數(shù)組,初始默認值都是0

????????????? 添加數(shù)據(jù):通過多個hash函數(shù),計算出在二進制數(shù)組中的位置,將其設置為1

????????????? 判斷數(shù)據(jù)是否存在:將元素通過hash函數(shù)算出在二進制數(shù)組中的位置,看其是否為1,如果都為1則可能存在,否則一定不存在

????????????? 優(yōu)點:二進制數(shù)據(jù),占用內(nèi)存極少,插入和查詢速度很快

????????????? 缺點:隨著數(shù)據(jù)增加,誤判率增加;無法判斷數(shù)據(jù)一定存在;無法刪除數(shù)據(jù)

????????????? redis實現(xiàn)布隆過濾器:

?????????????????? 在redis中,bitmaps提供了一套命令來操作類似字符串中的每一位(setbit、getbit、bitcount等),因此redis實現(xiàn)布隆過濾器底層是通過bitmap數(shù)據(jù)結(jié)構(gòu)。

???????????????????? Redission是在java中操作redis的庫,因此可利用Redission來實現(xiàn)布隆過濾器,也可用guava來實現(xiàn)布隆過濾器

http://www.risenshineclean.com/news/2114.html

相關文章:

  • 網(wǎng)站開發(fā)會什么做網(wǎng)絡營銷推廣
  • sfda的網(wǎng)站的建設特點免費推廣的網(wǎng)站平臺
  • 個人網(wǎng)站整站源碼下載阜新網(wǎng)絡推廣
  • 網(wǎng)站制作與維護公司seo營銷名詞解釋
  • 哪個網(wǎng)站做演唱會門票網(wǎng)絡推廣是做什么工作
  • 如何將項目發(fā)布到網(wǎng)上優(yōu)化關鍵詞首頁排行榜
  • 動態(tài)網(wǎng)站沒有數(shù)據(jù)庫怎么做百度推廣代運營公司
  • 做日本暖暖小視頻網(wǎng)站seo服務內(nèi)容
  • 《網(wǎng)頁設計與網(wǎng)站建設》大作業(yè)要求關鍵詞愛站網(wǎng)關鍵詞挖掘工具
  • 想建立什么網(wǎng)站嗎關鍵詞調(diào)詞平臺哪個好
  • 網(wǎng)站做二級站全網(wǎng)網(wǎng)絡營銷
  • 織夢 網(wǎng)站根目錄谷歌瀏覽器下載
  • 如何做網(wǎng)站走查一站式海外推廣平臺
  • 外貿(mào)網(wǎng)站建設推廣公司百度 營銷推廣怎么做
  • 做網(wǎng)站運營這工作怎么樣注冊域名
  • 一搜同志網(wǎng)站建設電話百度登錄個人中心
  • wordpress vip 插件網(wǎng)站seo推廣seo教程
  • 深圳疫情最新消息今天seo指搜索引擎
  • 西安做網(wǎng)站公司網(wǎng)絡優(yōu)化師是什么工作
  • 安徽六安瓜片是什么茶百家號seo怎么做
  • 企業(yè)商城建站最新小組排名
  • 網(wǎng)站建設及發(fā)展成品視頻直播軟件推薦哪個好一點
  • 微信上如何做網(wǎng)站網(wǎng)絡服務提供者不履行法律行政法規(guī)規(guī)定
  • 做網(wǎng)站付多少定金seo推廣績效考核指標是什么
  • XART視頻庫WordPressseo黑帽技術有哪些
  • 高唐做網(wǎng)站建設公司小程序拉新推廣平臺
  • 網(wǎng)上做論文的網(wǎng)站鄭州seo公司哪家好
  • 做商城網(wǎng)站簡單嗎廣東百度seo關鍵詞排名
  • 臨沂高端網(wǎng)站建設百度官網(wǎng)地址
  • 網(wǎng)站做好后怎么做seo湖南靠譜seo優(yōu)化