redis學習筆記 redis資料型別

2021-10-09 12:21:01 字數 2529 閱讀 8499

泛指非關係型的資料庫。隨著網際網路web2.0**的興起,傳統的關聯式資料庫在應付web2.0**,特別是超大規模和高併發的sns型別的web2.0純動態**已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。nosql資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題,包括超大規模資料的儲存。

易擴充套件

nosql資料庫種類繁多,但是乙個共同的特點都是去掉關聯式資料庫的關係型特性。資料之間無關係,這樣就非常容易擴充套件。無形之間,在架構的層面上帶來了可擴充套件的能力。

大資料量,高效能

nosql資料庫都具有非常高的讀寫效能,尤其在大資料量下,同樣表現優秀。這得益於它的無關係性,資料庫的結構簡單。一般mysql使用query cache。nosql的cache是記錄級的,是一種細粒度的cache,所以nosql在這個層面上來說效能就要高很多。

靈活的資料模型

nosql無須事先為要儲存的資料建立字段,隨時可以儲存自定義的資料格式。而在關聯式資料庫裡,增刪欄位是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是乙個噩夢。這點在大資料量的web 2.0時代尤其明顯。

高可用

nosql在不太影響效能的情況,就可以方便地實現高可用的架構。比如cassandra、hbase模型,通過複製模型也能實現高可用。

rdbms

nosql

鍵值(key-value)儲存資料庫

這一類資料庫主要會使用到乙個雜湊表,這個表中有乙個特定的鍵和乙個指標指向特定的資料。key/value模型對於it系統來說的優勢在於簡單、易部署。但是如果資料庫管理員(dba)只對部分值進行查詢或更新的時候,key/value就顯得效率低下了。舉例如:tokyo cabinet/tyrant, redis, voldemort, oracle bdb。

列儲存資料庫

這部分資料庫通常是用來應對分布式儲存的海量資料。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:cassandra, hbase, riak。

文件型資料庫

文件型資料庫的靈感是來自於lotus notes辦公軟體的,而且它同第一種鍵值儲存相類似。該型別的資料模型是版本化的文件,半結構化的文件以特定的格式儲存,比如json。文件型資料庫可以看作是鍵值資料庫的公升級版,允許之間巢狀鍵值,在處理網頁等複雜資料時,文件型資料庫比傳統鍵值資料庫的查詢效率更高。如:couchdb, mongodb. 國內也有文件型資料庫sequoiadb,已經開源。

圖形(graph)資料庫

圖形結構的資料庫同其他行列以及剛性結構的sql資料庫不同,它是使用靈活的圖形模型,並且能夠擴充套件到多個伺服器上。nosql資料庫沒有標準的查詢語言(sql),因此進行資料庫查詢需要制定資料模型。許多nosql資料庫都有rest式的資料介面或者查詢api。如:neo4j, infogrid, infinite graph。

redis:remote dictionary server(遠端字典伺服器),是完全開源免費的,用c語言編寫的,遵守bsd協議,是乙個高效能的(key/value)分布式記憶體資料庫,基於記憶體執行並支援持久化的nosql資料庫,是當前最熱門的nosql資料庫之一,也被人們稱為資料結構伺服器。

redis 與其他 key - value 快取產品有以下三個特點:

string(字串)

string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。

string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg或者序列化的物件 。

string型別是redis最基本的資料型別,乙個redis中字串value最多可以是512m

hash(雜湊)

redis hash 是乙個鍵值對集合。

redis hash是乙個string型別的field和value的對映表,hash特別適合用於儲存物件。

list(列表)

redis 列表是簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部或者尾部。它的底層實際是個鍊錶。

set(集合)

redis的set是string型別的無序集合。set的底層intset和hashtable兩種資料結構儲存的,使用intset儲存必須滿足下面兩個條件,否則使用hashtable,條件如下:

zset(sorted set:有序集合)

redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

常用命令參考官網

Redis學習筆記 Redis事務

redis事務可以一次執行多個命令 按順序地序列執行,執行中不會被其他命令插入,不許加塞 1.簡介 redis事務可以一次執行多個命令 允許在一次單獨的步驟中執行一組命令 特徵 1 批量操作在傳送exec命令前被放入佇列快取 2 收到exec命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然...

Redis學習筆記 Redis提供的五種資料結構

回到目錄 分布式快取,訊息佇列,替代session呵呵 session太不穩定了,呵呵 redis redis的崛起絕非偶然,它確實有自己的新東西在裡面,它不像memcached,只能將資料儲存在記憶體中,它提供了持久化機制,避免了場機後的雪崩的問題,即伺服器出現問題後,記憶體中保留的原始資料全部丟...

redis 學習筆記

本文寫作源於最近產品中部分功能用到了redis redis在功能上是乙個與memecache類似的軟體,但它比memecache提供了更強大的功能。redis本質上是乙個key value型別的記憶體資料庫。其value可以是string,list,set,sorted set,hash。很多地方都...