主頁 > 資料庫 > Redis 基本認識(筆試、面試題)

Redis 基本認識(筆試、面試題)

2020-09-11 15:31:47 資料庫

一、Redis

1、簡介

【官方簡介地址:】
    https://redis.io/topics/introduction

  看不懂不要緊,先混個眼熟,慢慢來...,

【初步認識 Redis:】
    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.

【翻譯:】
    Redis 是一個開源的、基于記憶體的資料存盤結構,可以作為資料庫、快取、訊息中間件,
    
【重點:】
    基于記憶體、支持多種資料結構、常用于快取,

 

2、為什么使用 Redis 作為快取?

(1)為什么要使用快取?
  對于一個系統來說,若直接操作資料庫,每次讀寫都經過磁盤操作,當并發量過高時,磁盤讀寫速度極大地影響系統的性能,使用快取,即在訪問磁盤前設定一個緩沖區,若緩沖區沒有資料,再去資料庫進行操作,這樣可以極大地減少磁盤操作,從而提高系統性能,

(2)Redis 是基于記憶體的、一個高性能的 key - value 資料庫(非關系型資料庫),
  記憶體的處理速度比操作磁盤快,可以提高性能,
  快取分擔了部分請求,減少了資料庫訪問壓力,提高了并發量,
  說起 key - value 庫,容易想到 Java 中的 Map,map 實作的是本地快取(即每臺機器各自擁有自己的快取),容量有限,隨著 JVM 存在、消失,而 Redis 實作的是分布式快取(即多臺機器可以共享一份快取資料),其資料可以持久化到硬碟中,可以自定義快取過期機制,

 

3、Redis 的資料結構?使用場景?

(1)常用命令:

【參考地址:】
    http://doc.redisfans.com/
    https://www.cnblogs.com/l-y-h/p/12656614.html

(2)常用資料結構:
  Redis 是由 C 語言撰寫的,其存盤是以 key - value 的形式,key 為字串,value 為 Redis 的資料結構,常用資料結構為:string、list、set、hash、sortedset,
  底層實作原理,以后有空再去研究...
  不同資料結構,若采用不同的編碼格式,底層會有不同的實作,

(3)常用資料結構使用場景(舉例,可能不太恰當,大致理解一下):
  String 使用場景:
  比如:一些博客、文章的閱讀量、點贊數等,

  可以根據 文章 ID 生成一個鍵,當某用戶閱讀、點贊后,在相應的 value 上加 1,
  比如 :
    key 為 文章閱讀量:文章id,
    value 為對應的 文章閱讀量,
    可以通過 incr、decr 等進行加減閱讀量,

【根據文章ID 生成一個 key:(每個文章都有不同的 id,從而區分不同的 key)】
    set article:readcount:1001 0      文章 id 為 1001 的文章當前閱讀量為 0
    set article:readcount:1002 0      文章 id 為 1002 的文章當前閱讀量為 0

【閱讀時,數量增 1:】
    incr article:readcount:1001       文章 id 為 1001 的文章閱讀量加 1
    
【獲取閱讀量:】
    get article:readcount:1001        獲取文章 id 為 1001 的文章閱讀量

 

 

 

Hash 使用場景:
  比如:電商網站的購物車,

  可以根據 用戶ID 生成一個 key,商品 ID 為 field,商品數量為 field 對應的 value,
  可以使用 hgetall 獲取所有的 field - value,即實作全選,
  可以使用 hincrby 對指定的 field 修改數量,
  可以使用 hlen 獲取當前購物車商品的種類,等等操作,

比如:
  key 為 用戶 ID user:用戶 ID
  field 為 商品 ID wares:商品 ID
  value 為 商品數量 商品數量

注:

  其余資訊可以通過 ajax 根據 用戶 ID 、商品 ID 進行查詢并回傳顯示,

【根據用戶 ID、商品 ID、商品數量 生成一個 key,】
    hset user:10001 wares:3001 110001 用戶 添加 一個 3001 商品,
    hset user:10001 wares:3002 210001 用戶 添加 兩個 3002 商品,
    
【全選操作:】
    hgetall user:10001             獲取 10001 用戶所有的 商品(field)以及數量(value)
    
【增加商品數量:】
    hincrby user:10001 wares:3002 310001 用戶再增加 33002 商品

 

 

 

List 使用場景:
  比如:微信訂閱號推送的訊息,

  不同的公眾號推送訊息有先有后,最后是按照時間順序進行排序顯示(最近的時間顯示在最上面),
  可以使用 List 存盤接收的訊息 ID,每接受一個 公眾號訊息 的 ID,就 LPUSH 進 List 中,最后使用 LRANGE 去獲取最新的推送訊息,

【接收公眾號推送訊息的 ID:】
    LPUSH msg:我的訂閱號-id 安徽共青團:10001
    LPUSH msg:我的訂閱號-id 唐唐頻道:20001
    LPUSH msg:我的訂閱號-id 全是黑科技:34811
    LPUSH msg:我的訂閱號-id 程式人生:2233
    LPUSH msg:我的訂閱號-id 共青團中央:32345
    
【展示公眾號 ID:】
    LRANGE msg:我的訂閱號-id 0 -1

 

 

 

Set 使用場景:
  比如:抽獎小程式,獲取朋友圈點贊的用戶資訊,可能關注的人(需要使用并集等操作)等,
  抽獎就是在一堆用戶中隨機抽取用戶,由于 Set 不可重復性,可以保證用戶唯一,
  使用 SADD 可以添加用戶 ID 到 set 中,
  使用 SMEMBERS 可以查看當前參與抽獎的所有元素,
  使用 SRANDMEMBER、SPOP 可以抽取獲獎者用戶,

【添加用戶:】
    sadd user 1001 1002 1003 1004
    
【查看所有用戶:】
    smembers user
    
【抽選用戶,不洗掉用戶:】
    srandmember user 3
    
【抽選用戶,洗掉用戶:】
    spop user 3

 

 

 

sortedset(zset)使用場景:
  比如:微博熱搜榜、百度熱議榜等,

 

 

 

二、Redis 持久化、資料庫、單執行緒

1、Redis 資料庫

  Redis 默認有 16 個庫,庫編號為 db0 - db15,資料庫之間的資料是相互隔離的、互不影響的,
  Redis 是 C/S 結構,有一個 redis-cli 和 redis-server, redis-server 用于啟動 Redis 服務,默認資料庫數量為 16,可以修改,redis-cli 用于連接某個資料庫,
  資料庫中采用哈希表存盤鍵值對,其中 value 可以為不同型別的資料結構,

2、Redis 鍵過期處理

(1)為什么進行過期處理?
  Redis 是基于記憶體的,記憶體容量比較有限,如果長期將 key - value 存放在 記憶體中,會占用大量記憶體,這樣肯定是不行的,所以需要對 key 設定過期時間,當 key 過期后,系統回應并將其洗掉,從而減少記憶體的占用,

(2)過期策略:
  定時洗掉:到某個時間點,就進行洗掉 過期鍵 的操作,對 記憶體 友好,對 CPU 不友好,
  惰性洗掉:每次獲取鍵時,判斷該鍵是否過期,過期則洗掉,對 CPU 友好,對 記憶體 不友好,
  定期洗掉:每過一段時間,就去洗掉 過期鍵,
  Redis 中采用 惰性洗掉 + 定期洗掉,即意味著 某個鍵 到了過期時間,也不一定會被立即洗掉,

(3)記憶體淘汰機制:
  由于 Redis 可能會不及時的洗掉過期 key,導致 記憶體里堆積了很多沒用的 key,會消耗大量記憶體,此時,需要通過記憶體淘汰機制,選擇不需要的 key,并將其洗掉,
  比如:設定消耗記憶體最大值,當超過記憶體最大值后,進行資料淘汰,將最近最少使用的 key 資料淘汰(一般應用于熱搜排行榜的場景),

【常見記憶體淘汰機制:】
    allkeys-lru:      在所有 key 中,移除最近最少使用的 key(常用)
    allkeys-random:   在所有 key 中,隨機移除 key,
    volatile-lru:     在設定過期時間的 key 中,移除最近最少使用的 key
    volatile-random:  在設定過期時間的 key 中,隨機移除 key,
    volatile-ttl:     在設定過期時間的 key 中,優先移除 即將過期 的 key,

 

3、資料持久化 -- RDB

  Redis 是基于記憶體的,Redis 一旦重啟,所有資料都會丟失,所以一般會將資料持久化到硬碟中,Redis 重啟后可以通過硬碟恢復資料,
  Redis 采用兩種方法進行資料持久化 -- RDB 、AOF,
(1)RDB(Redis DataBase)
  RDB 基于快照,可以指定時間間隔、將某一時刻的所有資料保存到一個 RDB 檔案中,是一個二進制檔案,默認為 dump.rdb,Redis 啟動時,若發現存在 rdb 檔案,則會自動載入該檔案(載入的程序是一個阻塞的狀態),

(2)通過三種方式可以實作 RDB,
  Method1:SAVE 命令觸發
    客戶端執行 SAVE 命令后,會阻塞當前 Redis 服務器(即 Redis 不能處理其他命令),直到 RDB 程序結束,若存在舊的 RDB 檔案,會進行替換,(此方式若資料量過大,會影響系統性能)

  Method2:BGSAVE 命令觸發
    客戶端執行 BGSAVE 命令后,會創建一個子行程,由子行程來創建 RDB 檔案,不會阻塞當前 Redis 服務器,

  Method3:redis.conf 組態檔中配置

【save 格式:】
    save m n          指的是 m 時間間隔內,至少出現了 n 次 key 變化,則進行保存

【舉例:】
    save 60 10000       指的是 60 秒內,至少出現了 10000 次 key 變化,則保存

 

(3)SAVE 與 BGSAVE 比較:
  SAVE 屬于 同步操作,會阻塞當前 Redis 服務器,但不會消耗額外記憶體,
  BGSAVE 屬于 異步操作,不會阻塞當前 Redis 服務器,但會消耗額外記憶體(創建子行程),

(4)RDB 優缺點:
  優點:
    RDB 是全量備份,將資料壓縮到二進制檔案中,格式緊湊(檔案小),適合資料備份以及恢復,
    RDB 可以使用子行程去創建 RDB 檔案,主行程不進行 磁盤操作,
  缺點:
    子行程進行持久化時,父行程若修改記憶體中的資料,子行程不會知曉,此時可能造成資料丟失,

 

4、資料持久化 -- AOF

(1)AOF(Append Only File)
  AOF 指當 Redis 服務器執行寫命令時,會將寫命令 保存到 AOF 檔案中(可以理解為日志記錄),

(2)AOF 執行流程:
  Step1:命令追加到緩沖區
    遇到寫命令時,將命令寫入 aof_buf 緩沖區,

  Step2:確認是否需要將緩沖區內容寫入檔案,
    通過組態檔 redis.conf 中 appendfsync 去確定是否將緩沖區內容寫入檔案,

    appendfsync always     # 每次有資料修改發生時都會寫入AOF檔案(磁盤開銷大),
    appendfsync everysec   # 每秒鐘同步一次,該策略為AOF的默認策略(丟失 1 秒資料),
    appendfsync no         # 從不同步,高效但是資料不會被持久化(資料丟失),

 

  Step3:檔案從緩沖區寫入到檔案,
    將緩沖區的內容寫入到 aof 檔案中,

  不停的執行寫命令操作后,會使得 aof 檔案變得越來越大,可以使用 BGREWRITEAOF 命令進行 AOF 重寫(可以合并 寫操作命令,減少檔案內容冗余),此重寫基于當前 資料庫資料重寫,不需要讀取舊的 aof 檔案,
  BGREWRITEAOF 命令會創建子行程,由子行程進行 AOF 重寫,其會存在一個 AOF 重寫緩沖區,重寫緩沖區用于 記錄 創建子行程后 主行程執行的 寫操作,當子行程執行完 AOF 重寫后,向父行程發送請求,將重寫緩沖區的資料寫入新的 aof 檔案中,從而使 當前資料庫 與 AOF 檔案寫操作一致,

(3)AOF優缺點:
  優點:
    可以更好的保護資料,默認進行 1 秒同步一次的操作,最多丟失 1 秒資料,
  缺點:
    AOF 檔案過大,恢復資料速度較慢,

(4)AOF、RDB 如何選擇?
  AOF、RDB 可以同時使用,但服務器優先使用 AOF 檔案進行資料還原,
  AOF:丟失資料少(視 appendfsync 而定),檔案體積大,恢復資料速度較慢,
  RDB:可能丟失一部分資料,檔案體積小,恢復資料速度較快,

 

5、為什么 Redis 是單執行緒?速度為什么快?

(1)為什么 Redis 是單執行緒的?
  Redis 基于記憶體進行操作,CPU 不是 Redis 的瓶頸,且單執行緒 比 多執行緒容易實作,

(2)速度為什么快?
  基于記憶體操作,讀寫速度快,
  單執行緒操作,避免頻繁背景關系切換,
  采用了非阻塞 I/O 多路復用機制,保證系統高吞吐量,
注:
  非阻塞 I/O 多路復用機制,用來保證多個連接時的系統吞吐量(此處不展開,有時間再總結),
  多路 指的是 多個 socket 連接,
  復用 指的是 共用 同一個執行緒,
  簡單的講,就是使單執行緒高效的處理多個連接請求,


6、Redis 和 memcached 區別?

(1)Redis 可以將資料持久化到硬碟中,memcached 只能將資料存盤在記憶體中(斷電后消失),

(2)Redis 支持多種資料型別,memcached 支持型別簡單,

 

三、快取雪崩、快取穿透、快取與資料庫讀寫一致

1、快取穿透是什么?如何解決?

(1)快取穿透是什么?
  快取穿透指查詢一個不存在的資料,且資料不在快取中,則查詢會從資料庫查詢,而資料庫查不到資料,則不會將資料存盤在快取中,以致于每次查詢都會繞過快取,從資料庫查資料,使快取失效,

(2)快取穿透的可能原因?解決?
原因:
  請求的引數不合理,
  比如資料庫的 id 自增,且從 100 開始,但是每次請求都是 100 以下的 id 或者 負數的 id,則每次查詢,快取中沒有值,直接去查資料庫,而資料庫查不到值,就不會將資料保存到快取中,從而使快取失效,

解決:
  方式一:對引數進行過濾處理(比如 BloomFilter),不合法的引數不會訪問到資料庫,
  方式二:當資料庫找不到資料時,回傳一個空物件到快取中,并設定一個過期時間,這樣就可以從快取中獲取資料了,

2、快取雪崩是什么?如何解決?

(1)快取雪崩是什么?
  快取雪崩指的是由于某種原因,導致緩沖層出現了問題,所有的請求(大量請求)直接訪問資料庫(可以理解為發生大量資料穿透),從而使資料庫宕機,

(2)快取雪崩的可能原因?解決?
原因一:
  Redis 服務掛掉了,即快取失效,所有請求不經過快取直達資料庫,資料庫反應不過來而宕機,

如何解決:
  Step1:應該盡量避免 Redis 服務掛掉,
    為了實作 Redis 高可用,應該使用 主從模式 + 哨兵模式(或者采用 Redis 集群),盡量避免 Redis 服務掛掉,
  Step2:應該盡量避免 資料庫 掛掉,
    萬一 Redis 服務真的掛了,應當進行 熔斷、降低、限流等操作,盡量避免資料庫被干掉,至少要保證服務還能正常運行,
  Step3:資料恢復,
    對 Redis 資料進行持久化,重啟 Redis 服務后,加載磁盤資料進行資料恢復,

原因二:
  Redis 對資料設定了過期時間,同一時間這些資料失效,此時恰巧有大量請求同時訪問這些資料,會穿過快取直接訪問資料庫,造成大量快取穿透,從而導致資料庫宕機,

如何解決:
  快取的同時,將過期時間設定成隨機值,此時能極大避免大量資料 過期時間一致,

3、快取、資料庫讀寫一致

(1)讀操作流程:
  Step1:查詢快取中是否存在資料,存在資料則直接回傳,
  Step2:快取中不存在資料,則查詢資料庫中是否存在資料,存在資料,則將資料保存在快取中,并回傳資料,

(2)讀寫操作同時進行時可能出現資料不一致,
  造成讀寫不一致的情況有很多,
  比如一件商品,開始時 資料庫、快取里顯示的庫存數量均為 1000,此時讀操作并沒有問題,現在賣出一件商品,需要更新資料庫,假如更新資料庫資料成功,但是更新快取資料失敗 ,即此時資料庫顯示庫存數量為 999,而快取顯示數量為 1000,則下次操作,獲取到的商品數量仍為 1000,此時就造成了讀寫不一致,

(3)如何解決讀寫不一致?
  方式一:一般給快取的資料設定過期時間,資料過期則被洗掉,下次會從資料庫查詢并更新快取,
  方式二:保證資料庫、快取更新的原子性(分布式事務),要么同時成功、要么同時失敗,

(4)更新快取、資料庫的兩種方式:
  方式一:先洗掉快取,再更新資料庫,
  方式二:先更新資料庫,再洗掉快取,
注:
  對于更新快取,一般直接洗掉某個資料,簡單粗暴,下次讀取時從資料庫讀取并保存到快取中,

對于方式一(單執行緒情況):
  若洗掉快取失敗,可以直接拋出例外,此時資料庫與快取資料均無變化,即資料一致,
  若洗掉快取成功,但是更新資料庫失敗,此時快取中沒有該資料,下次讀取時,從資料庫中讀取并保存到快取中,從而資料一致,
  若洗掉快取、更新資料庫均成功,下次讀取資料肯定一致,

對于方式一(高并發情況):
  執行緒 A 進行更新操作,執行緒 B 進行讀操作,
  執行緒 A 洗掉快取,此時執行緒 B 進行讀取,發現快取不存在,則直接從資料庫中讀取,并將該值存入快取,
  執行緒 A 對資料庫資料進行更新,此時快取中的值 與 資料庫的值不一致了,
如何解決上述的資料不一致:
  將命令操作積壓到佇列中(先進先出),進行串行化,比如先洗掉快取,再更新資料庫,最后再進行讀取,

對于方式二(單執行緒情況):
  若更新資料庫失敗,則直接拋出例外,此時資料庫與快取資料均無變化,即資料一致,
  若更新資料庫成功,但洗掉快取失敗,則資料庫的資料為新資料,與快取資料不一致了,
  若更新資料庫、洗掉快取均成功,則下次讀寫的資料肯定一致,
如何解決上述的資料不一致:
  不斷重復洗掉 key,直至可以洗掉,

對于方式二(高并發情況):
  執行緒 A 進行查詢操作,執行緒 B 進行更新操作,
  執行緒 A 查詢時,恰好快取失效,直接通過資料庫進行查詢,此時 執行緒 B 更新資料庫資料,并進行快取洗掉,然后 執行緒 A 將從資料庫獲取的資料寫入快取中,此時快取資料與資料庫資料不一致了,
上例情況發生概率很低,畢竟寫操作的速度慢于讀操作,且讀操作要先于寫操作進入資料庫,且慢于寫操作操作快取,同時滿足這個情況的概率只能說是走了狗屎運,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/6056.html

標籤:NoSQL

上一篇:關于redis單執行緒的分析

下一篇:MongoDB基礎入門

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more