【大數據】——Redis總結

一、Redis簡介

      Redis是一種鍵值系統,可以用來緩存或存儲數據。Redis是“Remote Dictionary Server”(遠程字典服務)的縮寫,提供了字符串(string),列表(list),哈希(hash),集合(set)和有序集合(sorted set)等5種數據結構,這些數據結構使它成爲一種便於使用的鍵值系統。

      Redis是一種內存數據庫,這使其在數據存取效率方面表現突出。由於內存中的數據時刻面臨丟失的危險,Redis提供了兩種持久化機制,及時將內存中的數據寫入硬盤。第一種機制爲RDB,利用存儲快照的方式把內存數據定期寫入硬盤;第二種機制爲AOF,利用寫日誌的方式,每執行一條更改Redis數據的命令,就在日誌裏附加上該命令並保存在硬盤上。Redis默認開啓RDB模式,關閉AOF模式,這是因爲AOF更加耗時。但是,如果對數據安全要求極高,無法承擔任何數據丟失的後果,AOF模式就變成了持久化的首選。當然,即使Redis具備持久化機制,但是一旦本地硬盤損壞,數據丟失依然在所難免。所以,Redis又提供了一種主從複製功能,作用是將一個主數據庫(master)的數據自動同步到多個從數據庫(slave),從而儘可能防止數據丟失。Redis還具有其它一些特性,其中包括簡單的事物支持、發佈訂閱 ( pub/sub)、管道(pipeline)和虛擬內存(vm)等。

二、Redis安裝

1、服務器端:Redis 2.8.19版本

2、完成安裝之後,需要啓動Redis服務,這時你可以打開一個終端進行測試了,配置文件中默認的監聽端口是6379。

3、Java客戶端:Jedis 2.5.2.jar 還需要commons-pool2-2.3.jar

三、Redis主從配置

Redis Replication的特點和優勢。

      1). 同一個Master可以同步多個Slaves。

      2). Slave同樣可以接受其它Slaves的連接和同步請求,這樣可以有效的分載Master的同步壓力。因此我們可以將Redis的Replication架構視爲圖結構。

     3). Master Server是以非阻塞的方式爲Slaves提供服務。所以在Master-Slave同步期間,客戶端仍然可以提交查詢或修改請求。

     4). Slave Server同樣是以非阻塞的方式完成數據同步。在同步期間,如果有客戶端提交查詢請求,Redis則返回同步之前的數據。

    5). 爲了分載Master的讀操作壓力,Slave服務器可以爲客戶端提供只讀操作的服務,寫服務仍然必須由Master來完成。即便如此,系統的伸縮性還是得到了很大的提高。

     6). Master可以將數據保存操作交給Slaves完成,從而避免了在Master中要有獨立的進程來完成此操作。

Redis Replication的工作原理:

       在Slave啓動並連接到Master之後,它將主動發送一個SYNC命令。此後Master將啓動後臺存盤進程,同時收集所有接收到的用於修改數據集的命令,在後臺進程執行完畢後,Master將傳送整個數據庫文件到Slave,以完成一次完全同步。而Slave服務器在接收到數據庫文件數據之後將其存盤並加載到內存中。此後,Master繼續將所有已經收集到的修改命令,和新的修改命令依次傳送給Slaves,Slave將在本次執行這些數據修改命令,從而達到最終的數據同步。如果Master和Slave之間的鏈接出現斷連現象,Slave可以自動重連Master,但是在連接成功之後,一次完全同步將被自動執行。主從複製可以配置在不同的服務器上,也可以配置在同一臺服務器上,監聽不同的端口。一般寫操作必須指向主服務器,從服務器也可以接受寫請求,而且不會報錯,但是,改變不會被同步複製。讀操作則可以被指向從服務器,得以緩解主服務器的讀寫壓力。

M主:172.28.20.52     S從:172.31.68.74

         而配置主從機制只需要修改從服務器的redis配置文件redis.conf即可,如下。

此處需要修改成從服務器的IP地址。

此處映射到主服務器上。

四、redis數據類型


      Redis一共支持五種數據類:string(字符串),hash(哈希),list(列表),set(集合)和zset(sorted set有序集合)。

     (1)字符串(字符串):它是redis的最基本的數據類型,一個鍵對應一個值,需要注意是一個鍵值最大存儲512MB。

(2)hash(哈希)
redis hash是一個鍵值對的集合,是一個string類型的field和value的映射表,適合用於存儲對象

(3)表(列表)
是redis的簡單的字符串列表,它按插入順序排序

(4)組(集合)
是字符串類型的無序集合,也不可重複

(5)zset(sorted set有序集合)
是string類型的有序集合,也不可重複
有序集合中的每個元素都需要指定一個分數,根據分數對元素進行升序排序,如果多個元素有相同的分數,則以字典序進行升序排序,sorted set因此非常適合實現排名

 五、參考資料

1、參考資料1:https://blog.csdn.net/middleware2018/article/details/80355418

2、參考資料2:Redis基礎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章