1. 程式人生 > >redis學習總結

redis學習總結

  • Redis 伺服器的所有資料庫儲存在redisServer.db陣列中,而資料庫的數量則是redisServer.dbnum屬性儲存。
  • 客戶端通過修改目標資料庫指標,讓它指向redisServer.db陣列中的不同元素來切換不同的資料庫。
  • 資料庫主要由dict和expires兩個字典構成,其中dict字典負責儲存鍵值對,而expires字典則負責儲存鍵值的過期時間,
  • 因為資料庫的鍵總是一個字串物件,而值則可以是任意一種Redis物件型別,包括字串物件,雜湊表物件,集合物件,列表物件,有序集合物件,分別對應字串鍵,雜湊表鍵,集合鍵,列表鍵合有序集合鍵值。
  • expires 字典的鍵指向資料庫中的某個鍵,而值則記錄了資料庫間的過期時間,過期時間是一個以毫秒為單位的UNIX時間錯撮。
  • Redis使用惰性刪除和定期刪除兩種策略來刪除過期鍵值;惰性刪除策略只在碰到過期鍵時才進行刪除操作,定期刪除策略則每隔一段時間主動查詢並刪除過期鍵值。
  • 執行SAVE命令或者BGSAVE命令所產生的新的RDB檔案不會包含過期已經過期的鍵。
  • 執行BGREWRITEAOF命令錯產生的重寫AOF檔案不會包含已經過期的鍵。
  • 一個過期鍵值被刪除之後,伺服器會一直追加一條DEL命令到現在的AOF檔案來實現顯式的刪除過期鍵。
  • 當主伺服器刪除一個過期鍵之後,他會向所有伺服器傳送一條DEL命令,刪除的過期鍵。
  • 從伺服器即使發現過期鍵也不會自作主張的刪除它,而是等待主節點發來的DEL命令,這種統一。中心化的過期鍵刪除策略可以保證主從伺服器資料一致性。
  • 當Redis命令對資料庫進行修改之後,伺服器會根據配置向客戶端傳送資料庫通知。
  • RDB檔案用於儲存和還原Redis伺服器所有資料庫中的所有鍵值對資料。
  • SAVE命令有伺服器程序直接操作,所以該命令會阻塞伺服器。
  • BGSAVE命令由子程序執行儲存操作,所以該命令不會阻塞伺服器。
  • 伺服器狀態會儲存所有用save選項設定的儲存條件,當任意一個儲存條件被滿足時,伺服器會自動執行BGSAVE命令。
  • RDB檔案是一個經過壓縮的二進位制檔案,由多個部分組成。
  • 對於不同型別的鍵值對,RDB檔案會使用不同的方式來儲存它們。
  • AOF檔案通過儲存所有修改資料庫的寫命令請求來記錄伺服器的資料庫狀態。
  • AOF檔案中的所有命令都是以Redis命令請求協議格式儲存。
  • 命令請求會先儲存到AOF緩衝區裡面,之後在定期寫入並同步AOF檔案。
  • appendfsync選項中的不同值對AOF持久化功能的安全性以及Redis伺服器的效能有很大的影響。
  • 伺服器只要再入並重新執行儲存在AOF檔案中的命令,就可以還原資料庫本來的狀態。
  • AOF重寫可以產生一個新的AOF檔案,這個新檔案和原有的檔案所儲存資料庫的狀態是一樣的,但是體積更小。
  • AOF充血是一個歧義的名字,該功能是通過讀入資料庫中的鍵值對來實現的,程式無需對現有的AOF檔案進行讀入/分析/或者寫操作。
  • 在執行BGREWRITEAOF命令時,Redis伺服器會維護一個AOF重寫緩衝區,該緩衝區會在子程序建立新AOF檔案的工作之後,伺服器會將重寫緩衝區的所有內容追加到新AOF檔案的末尾,使得新舊兩個AOF檔案儲存資料庫狀態一直。最後,伺服器用到新的AOF檔案替換AOF檔案,以此來完成AOF檔案重寫操作。
  • Redis伺服器是一個事件驅動程式,伺服器處理的事件分別時間事件和檔案事件兩類。
  • 檔案事件處理器是基於Reactor模式實現的網路通訊程式。
  • 檔案事件是對套接字操作的抽象:每次套接字變為可應答,可寫或者可讀時,相應的檔案事件就會產生。
  • 檔案事件為別AE_READABLE事件和AE_WRITEABLE事件兩類。
  • 時間事件分別為定時事件和週期性事件:定時事件只是指定的時間到達一次,而週期事件則每隔一段時間到達一次。
  • 伺服器在一般情況下只執行servercron函式一個時間事件,並且這個事件是週期性事件。
  • 檔案事件和時間事件之間是合作關係,伺服器會輪流處理兩種事件,並且處理事件的過程中也不會進行搶佔。
  • 時間事件的實際處理時間通常會比設定的到達時間晚一些。
  • 伺服器狀態結構使用clients量表連線起多個客戶端狀態,新新增的客戶端狀態會被放到連結串列的末尾。
  • 客戶端狀態的flags屬性使用不同標誌來表示客戶端的角色,以及客戶端房前所處的狀態。
  • 輸入緩衝區記錄了客戶端傳送的命令請求,這個緩衝區的大小不能超過1GB。
  • 命令的引數和引數的個數會被記錄在客戶端狀態的argv和argc屬性頁面裡面,其固定大小緩衝區的最大大小為16K,而可變大小緩衝區的最大大小不能超過伺服器設定的硬性限制值。
  • 輸出緩衝區限制值有兩種,如果輸出緩衝區的大小超過伺服器設定的硬性限制,那麼客戶端會被立刻關閉,除此之外如果客戶端在一定時間內,一直超過伺服器設定的軟性限制,那麼客戶端也會被關閉。
  • 當一個客戶端通過網路連線上伺服器時,伺服器會為這個客戶端建立相應的客戶端狀態。網路連線關閉/傳送了不和協議格式的命令請求,成為CLIENT KILL命令的目標,空轉時間超時。輸出緩衝區的大小超過限制,以上這些原因都會造成客戶端被關閉哦。
  • 處理Lua指令碼的偽客戶端在服務初始化是建立,這個客戶端會一直存在,直到服務關閉。
  • 載入AOF檔案時使用的偽客戶端在載入工作開始時建立,載入工作完畢之後關閉。

相關推薦

Redis學習總結(1)——Redis記憶體資料庫詳細教程

1.Redis是什麼 2.redis的作者何許人也 3.誰在使用redis 4.學會安裝redis 5.學會啟動redis 6.使用redis客戶端 7.redis資料結構 – 簡介 8.redis資料結構 – strings 9.redis資料結構 – lists 10.redis

第十四節----Redis學習總結

14.1  Redis到底是什麼?         在上一小節中學習瞭如何在Java中使用Redis。在Java中使用Redis,只要使用Redis提供的JeRis介面即可。 撥雲見日      

Redis學習總結之(五)釋出訂閱

一、釋出訂閱 釋出訂閱是訊息傳遞的一種方式,即釋出者釋出訊息,訂閱者獲取訊息,中間傳輸的是一種訊息,所以應該有四個必須的要素:釋出者、訂閱(接受)者、通道、訊息。在Redis裡,由於redis分客戶端和服務端,redis服務端提供服務,所以釋出者(publishser)和訂

Redis學習總結(10)——快取雪崩、快取穿透、快取併發、快取預熱、快取演算法的概念及解決思路總結

一、快取雪崩 概念: 可能是因為資料未載入到快取中,或者快取同一時間大面積的失效,從而導致所有請求都去查資料庫,導致資料庫CPU和記憶體負載過高,甚至宕機。 解決思路: 1.1、加鎖計數(即限制併發的數量,可以用semphore)或者起一定數量的佇列來避免快取失效時大

Redis學習總結(12)——Redis常見面試題再總結

1、什麼是Redis? Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,每秒可以處理超過 10

Redis學習總結(JAVA篇)

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 Jedis是Redis官方首選的Java客戶端開發包,Redis是一個開源的Key-Value資料快取。 使用JAVA進行Redis

redis學習總結

Redis 伺服器的所有資料庫儲存在redisServer.db陣列中,而資料庫的數量則是redisServer.dbnum屬性儲存。 客戶端通過修改目標資料庫指標,讓它指向redisServer.db陣列中的不同元素來切換不同的資料庫。 資料庫主要由dict和expires兩個字典構成,其中dict字典負

redis學習總結(超讚!!!)

我是技術搬運工,好東西當然要和大家分享啦原文地址Redis 是什麼Redis 是速度非常快的非關係型(NoSQL)記憶體鍵值資料庫,可以儲存鍵和五種不同型別的值之間的對映。五種型別資料型別為:字串、列表、集合、有序集合、散列表。Redis 支援很多特性,例如將記憶體中的資料持

NoSQL 資料庫之 Redis 學習總結

1、NoSQL介紹   為了解決高併發、高可用、高可擴充套件,大資料儲存等一系列問題而產生的資料庫解決方案。NoSql,叫非關係型資料庫,它的全名Not only sql。它不能替代關係型資料庫,只能作為關係型資料庫的一個良好補充。2、NoSQL分類a>  鍵值(Key

redis學習筆記(14)---redis基本命令總結

del diff lan 命令 列表 對象 很多 順序 reg http://doc.redisfans.com/ 網頁,對所有redis命令的用法與示例進行了詳細的描述 概述 Redis的鍵值可以使用物種數據類型:字符串,散列表,列表,集合,有序集合。本文詳細介紹這

Redis學習之set類型總結

內容 類型 字符集 members 無序 card 操作 div redis set類型看作沒有排序的字符集合。註意:如果多次添加相同元素,set將保留該元素的一份拷貝 常用的操作如下 一、增 127.0.0.1:6379> SADD myset b c d /

學習總結-Redis

jedis clu make 組件 rdb sin test 自動 數據類型 一,簡介 redis(Remote Dictionary Server)是一種Nosql技術,它是一個開源的高級kv存儲和數據結構存儲系統,它經常被拿來和Memcached相比較,但是Mem

Redis學習---面試基礎知識點總結

精度 rop href list ping 技術方案 分布 專業 了解 【學習參考】 https://www.toutiao.com/i6566017785078481422/ https://www.toutiao.com/i6563232898831352323/ 0.

Redis學習七:Redis的持久化-總結(Which one)

會有 原始的 實現 丟失 span save 在服務器 which 方式 1.官網建議 2.RDB持久化方式能夠在指定的時間間隔能對你的數據進行快照存儲 3.AOF持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些 命令來恢復原始的數據,AOF命

【Spring Boot學習總結】14.Spring Boot整合Redis-與傳統方式對比

前面我們講解了如何使用Spring Boot來控制事務,下面我們來講解一下如何使用Spring Boot來整合Redis 為了對比傳統工程與Spring Boot整合的不同,以及彰顯Spring Boot整合的優勢,我們會逐一剖析傳統整合方式與Spring Boot整合方式。 一、傳統方式整

redis基礎學習總結

一、redis是什麼? 1.redis是一個記憶體快取記憶體資料庫。它不是一個關係型資料庫,redis是一個key-value儲存系統,Redis是單執行緒的,基於事件驅動的; 二、redis有什麼特點? 1.redis 以記憶體作為資料儲存的截止,讀寫的效率很高 2.儲存在redis中的資料是持久化

Redis的個人學習總結

20181024更 在此之前,筆者只知道redis是個記憶體資料庫,很多公司用。 Redis是什麼?什麼場景適合用Redis?Redis的安裝和基本用法有哪些? Redis官網https://redis.io/ Redis的官網沒有Windows版本的redis,需要到github上

Redis學習5之redis-cli使用方法總結

1.redis-cli使用時各引數的含義和使用方法 [email protected]:~/7000$ redis-cli --help redis-cli 3.0.3 Usage: redis-cli [OPTIONS] [cmd [arg

Redis學習筆記~常用命令總結

回到目錄 客戶端redis-cli常用的命令總結 連線到伺服器 redis-cli -h 127.0.0.1 -p 6379 --連線指定的redis伺服器 釋出/訂閱, pub/sub模式執行在redis程序中,不會被持久化過,程序掛了,資訊丟失 SUBSCRIBE Lind --

Redis學習(二) master/slave、sentinel、Cluster簡單總結

專案中用到Redis,所以準備學習一下,感覺Redis的概念還是很多的,什麼主從模式、sentinel模式、叢集模式的,一下子都暈了,我覺得還是有必要先理清這些基本概念再說。 一、單節點例項   單節點例項還是比較簡單的,平時做個測試,寫個小程式如果需要用到快取的話,啟動一個Redis還是很