Redis非關係性數據庫有什麼特點?

麼麼茶加糖


簡單地說,Redis是一個高性能的key-value數據庫,常用於搭建緩存系統,提高併發響應速度。典型的數據讀取流程:


一,支持存儲多種數據類型

string(字符串)、list(鏈表)、set(集合)、zset(sorted set有序集合)和hash(哈希類型)。


二,數據操作

push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。


三,多種語言客戶端

提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。


四,支持主從同步

可以集群化部署,數據從主服務器向任意數量的從服務器上同步。


五,集成方便

以Java + Spring Boot為例:


急速馬力快de源碼控


Redis概述

Redis是一個開源的內存中數據結構存儲系統,用作數據庫,緩存和消息代理。R

edis支持各種數據結構,例如哈希,字符串,列表,集合,位圖,超級日誌,帶範圍查詢的排序集,帶半徑查詢的地理空間索引以及流。它具有LRU逐出,Lua腳本,內置複製,事務以及磁盤持久性的不同階段。這樣可以通過Redis Sentinel以及在Redis Cluster的幫助下進行自動分區來提供高可用性。

知道如何使用Redis的個人可以執行許多操作,例如增加哈希值;附加到字符串;計算集交集;聯合與差異;將元素推到列表中,或在排序集中收集排名最高的成員。

為了獲得出色的性能,Redis使用內置的內存數據集進行操作。

根據用例,可以通過不時將數據集轉儲到磁盤一次或將每個命令附加到日誌來保持相同。如果需要網絡化,功能豐富的內存中緩存,則可以輕鬆禁用持久性。

Redis甚至支持瑣碎的設置主從異步複製,以及非常快速的非阻塞同步,自動重新連接以及netsplit上的部分重新同步。

Redis的功能

Redis用ANSI C語言編寫,並且可以在大多數POSIX系統(例如BSD,Linux,OS X)中使用,而沒有任何外部依賴關係。OS X和Linux被認為是Redis開發和測試最多的兩個操作系統,而Linux已用於部署Redis。Redis可以在Solaris派生的系統(例如SmartOS)中運行,但是盡最大努力提供支持。

不幸的是,沒有為Windows構建提供官方支持,但是Microsoft為Redis開發並維護了Win-64端口。在2019年,Redis慶祝成立10週年。Redis的其他重要功能如下:

1. 高級數據結構。Redis為值提供了五個可能的數據選項。這些是散列,列表,集合,字符串和排序集合。給出了這些數據類型特有的操作,並附帶了有據可查的時間複雜性(Big O表示法)。

2. 高效的性能。由於其內存特性,項目經理致力於確保將複雜性保持在最低限度的承諾以及基於事件的編程模型,因此該應用程序擁有出色的讀寫性能。

3. 極其輕巧且無依賴性。Redis用ANSI C語言編寫,並且沒有外部依賴性。該程序在所有POSIX環境中均能完美運行。Redis尚未正式支持Windows平臺,但是Microsoft已為該平臺提供了一個實驗性構建。

4. 高可用性 。Redis具有對非阻塞,異步,主/從複製的內置支持,以確保高級別的數據可用性。當前有一個名為Redis Sentinel的高可用性解決方案,目前可以使用,但仍被認為是一個進行中的項目。

為什麼要使用Redis?

因此,現在開始使用Redis時,可能會問為什麼要使用Redis,或者與其他同類產品相比,使用Redis有什麼用?好吧,毫無疑問,Redis是其其他競爭對手之外的佼佼者。但是,使它與眾不同的是它的創造和工作效率。下面提到的是一些為什麼至少要嘗試Redis的最重要原因。

1. 超快的速度。Redis極快!這是因為它是用C語言編寫的。

2. NoSQL數據庫。Redis是NoSQL數據庫。

3. 流行用法。目前,Redis已被Pinterest,Snapchat,GitHub,微博,Digg,StackOverflow,Craigslist和Flickr等許多技術巨頭使用。

4. 對緩存有用。為了保護雲數據庫調用並因此節省一些資金,人們可以選擇通過Redis進行緩存。

5.對開發人員友好。Redis對開發人員友好。目前,大多數語言都支持它。這是使用這種開源技術的巨大優勢。諸如C,C ++,C#,JavaScript,Java,Go,Objective-C,Python,PHP等語言以及幾乎所有著名語言都支持Redis。

Redis應用場景

Redis的簡單性、異常快的性能以及對數據結構的原子操作,為解決與傳統關係數據庫一起實施時遇到的難題或執行不力的問題提供了自己的解決方案。由於Redis的通用性,它們的一些流行應用如下:

1. 隊列。Rescue等項目將Redis用於後端以對後臺作業進行排隊。

2. 發佈和訂閱。自2.0版發佈以來,Redis提供了使用發佈/訂閱範式分發數據的功能。一些組織已經轉移到Redis並離開了其他消息隊列系統(例如RabbitMQ,zerm等),僅是因為Redis的可靠性能和簡單性。

3. 緩存。由於其高性能,當讀寫操作量超過傳統數據庫的功能時,許多開發人員已轉向Redis。與傳統的緩存解決方案相比,Redis具有將數據持久保存到磁盤的能力,因此被認為是更好的選擇。

4. 計數器。原子命令(例如HINCRBY)為各種計數器的簡單且線程安全的實現提供訪問權限。形成計數器就像確定鍵名然後發出HINCRBY命令一樣容易。甚至在增加數據之前都沒有讀取數據,甚至沒有數據庫方案可以更新。由於這些操作是原子操作,因此當它們從多個應用程序服務器訪問時,計數器將有助於保持一致性。


你看我獨角獸嗎


Redis 非關係型數據庫簡介

Redis是一款開源的、高性能的一個第三方軟件,就是一個key-value存儲系統。它常被稱作是一款數據結構服務器(data structure server)。Redis的鍵值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等數據類型。對於這些數據類型,你可以執行原子操作。例如:對字符串進行附加操作(append);遞增哈希中的值;向列表中增加元素;計算集合的交集、並集與差集等。

redis是一種Nosql數據庫,Nosql全稱是Not Only SQL,是一種不同於關係型數據庫的數據庫管理系統設計方式。對NoSQL最普遍的解釋是“非關係型的”,強調Key-Value 存儲和文檔數據庫的優點,而不是單純的反對RDBMS.

為了獲得優異的性能,Redis採用了內存中數據集(dataset)的方式。根據使用場景的不同,你可以每隔一段時間將數據集轉存到磁盤上來持久化數據,或者在日誌尾部追加每一條操作命令。

Redis同樣支持主從複製(master-slave replication),並且具有非常快速的非阻塞首次同步(non-blocking first synchronization)、網絡斷開自動重連等功能。同時Redis還具有其它一些特性,其中包括簡單的check-and-set機制、pub/sub和配置設置等,以便使得Redis能夠表現得更像緩存(cache)。

Redis還提供了豐富的客戶端,如ServiceStack.Redis,以便支持現階段流行的大多數編程語言。詳細的支持列表可以參看Redis官方文檔:http://redis.io/clients。Redis自身使用ANSI C來編寫,並且能夠在不產生外部依賴(external dependencies)的情況下運行在大多數POSIX系統上,例如:Linux、*BSD、OS X和Solaris等。





分享到:


相關文章: