RediSQL 0.8.0 發佈 為 Redis 提供完整的 SQL 功能

RediSQL 0.8.0 發佈了,RediSQL 是一個 Redis 模塊,為 Redis 提供完整的 SQL 功能。RediSQL 支持所有 Redis 數據類型和功能,也支持 SQL 語句 SELECT/INSERT/UPDATE/DELETE 等等,以及一些嵌套的連接和數據倉庫功能(例如外鍵約束)。

RediSQL 0.8.0 發佈 為 Redis 提供完整的 SQL 功能

此版本引入了兩個新命令:

REDISQL.QUERY.INTO[.NOW]與REDISQL.QUERY_STATEMENT.INTO[.NOW]。

新命令的行為類似於 REDISQL.QUERY 和 REDISQL.QUERY_STATEMENT,但它們將結果作為第一個參數XADD給 Redis 流。

將查詢結果寫入流中可以帶來幾方面的好處:

首先,可以輕鬆地緩存這些高消耗查詢的結果。

其實,它將結果的創建與其消費分開,這是向前邁出了非常重要的一大步,特別是對於大的查詢結果來說。

將查詢結果寫入流中可以更有效地使用 Redis 主線程時間。實際上,查詢的計算不是由 redis 主線程完成的,但它卸載到另一個線程以允許 redis 繼續為客戶端提供服務,而返回結果必須在 Redis 主線程中完成。因此,長時間的結果可能需要花費大量時間才能返回給客戶端,並且在那段時間內 Redis 無法提供其它請求。將結果寫入流中可以帶來改進。

此外,一個小的消費者不會期望得到一個大的查詢結果,這會讓其不堪重負。在標準數據庫中,這個問題通常使用遊標來解決,但 Redis 本身並不提供此功能。Redis 提供列表,但它們只是平面列表,只能存儲字符串,在它們之上創建遊標會很複雜。相反,使用流則會更加適合,雖然它們也只能存儲字符串,但會將其存儲到小的 k-v 對象條目中,每個條目代表查詢結果集的一行。


分享到:


相關文章: