Redis簡介 持久化 集羣

Redis:

redis是一個開源的,內存中的數據結構存儲系統,是非關係型數據庫;

它可以用作數據庫、緩存和消息中間件,也可以,可基於內存亦可持久化的日誌型、Key-Value數據庫,而且提供多種語言的API,

您也可以關閉持久化功能,將Redis作爲一個高效的網絡的緩存數據功能使用;

redis的數據會存儲到硬盤上;

Redis支持五種類型的數據結構(lists,hashes,sets,hset,strings,sorted sets)其中sorted set爲有序集合可重複,set不可重複,

Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載進行使用。

1)設置key有效時間,時間單位是second:

127.0.0.1:6379> EXPIRE key seconds

 

2)zset集合根據score分數由小到大排列:

127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]

 

redis持久化:

保存數據一種採用的是rdb(快照的形式進行數據的保存,),快照是採用一種機制保存,這種機制你可以自己在redis的配置文件中進行配置,隔多長時間保存多少數據,這種方法是比較快了,數據會被保存到硬盤上,當redis啓動的時候,硬盤上的數據會在寫到數據庫中,這種方法是大大提高了數據的存儲和讀取的效率。但是性能上還是會有一定的影響,畢竟他還要去佔用cpu去做保存快照的操作;

redis保存數據的另一種方法就是採用aof集羣的方式,它會使每個服務器內都有對方服務器上的數據,這中方式避免了像rdb那種在特定時間內用快照保存數據的機制,減少內存的佔用,從而提高性能。而且這種方法還有另一個好處就是,當一個服務器蕩掉以後,數據不會因此丟失,而是當你在操作數據的時候會從其他的服務器上讀到你想要操作的數據。但是這種方法會使你在硬件設備上付出一定的成本。

默認的保存方式就是rdb,

Redis集羣原理:

    Redis默認有16384個槽點,這是它能夠存儲數據的上限,假如有三個集羣,這三個集羣會將這所有的槽點進行均分,每個集羣會對應區間的槽點,這三臺服務器會互相發送/接受ping/pong指令來交互確認彼此正常狀態,當添加數據的時候,會根據key對應的hash值(通過crc16算法),計算出該key放在哪個節點下,然後進行存放數據,

如何防止redis數據丟失?主從複製,會有備份機.類似於ngnix的備份機,當主機掛掉之後會把數據通過某種方式存儲到備份機,

通過選舉機制進行確定服務器是否宕機,所有的備份機會連接每臺redis主服務器,通過哨兵模式某種機制共同判斷某臺主機是否宕機,如果符合某種條件,則認爲該主服務器宕機,數據便會存儲到從服務器上,也就是備份機.他們不聽的ping/pong來進行信息交互,當超過半數認爲某服務器宕機了,就會進行數據轉移

主從+分片+選舉(選舉底層用的就是哨兵的原理)

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