Redis是一種NoSQL的進階鍵值(key-value)資料儲存,他也被稱為資料結構服務器(data structure server)。
因為他有強大的資料類型,像是Strings、 Hashes、Lists、Sets、Stored Sets、Bitmas及HyperLogLogs.
預設Redis把所有的資料儲存在記憶體中,因此讀取寫入速度非常快。
他也可以把資料永久保存在磁碟,例如我們所知的snapshotting及journaling。
指令連線方式式 (這裡的-h代表是host,-h後的redis是主機名稱)
redis-cli -h redis
然後輸入密碼
auth 密碼
通用的數據類型
String
字符串是 Redis 中最通用的數據類型,因為它們有許多命令和多種用途。根據其值和使用的命令,字符串可以表現為整數、浮點數、文本字符串或位圖。它可以存儲任何類型的數據:文本(XML、JSON、HTML 或原始文本)、整數、浮點數或二進制數據(視頻、圖像或音頻文件)。字符串值不能超過 512 MB 的文本或二進制數據。
快取機制(Cache mechanisms):可以在 Redis 中快取文本或二進制數據,可以是從 HTML 頁面和 API 響應到圖像和視頻的任何內容。
可以使用命令 SET、GET、MSET 和 MGET 來實現一個簡單的快取系統。
具有自動到期的快取(Cache with automatic expriation):字符串與自動密鑰到期相結合
可以使用 SETEX、EXPIRE 和 EXPIREAT 命令構建一個健壯的快取系統。這在資料庫時非常有用查詢需要很長時間才能運行,
並且可以快取給定的時間段。因此,這避免了過於頻繁地運行這些查詢,並且可以提高應用程式的性能。
計數(Counting):可以使用字符串和命令 INCR 和 INCRBY 輕鬆實現計數器。計數器的好例子是頁面瀏覽量、視頻瀏覽量和喜歡。
字符串還提供其他計數命令,例如 DECR、DECRBY 和 INCRFLOATBY。
Lists
命令 BRPOP 刪除 Redis 列表的最後一個元素。如果 List 為空,它會等到有東西要刪除。 BRPOP 是 RPOP 的阻塞版本。但是,RPOP 並不理想。如果 List 為空,我們需要自己實現某種輪詢,以確保項目在添加到隊列後立即得到處理。最好利用 BRPOP 而不必擔心空列表。
Hash
Hash是存儲對象的絕佳資料結構,因為您可以將字串映射到值。它們經過優化,可以有效地使用內存並非常快速地詢找資料。
在 Hash 中,字串名和值都是字符串。因此Hash 是 String 到 String 的映射。
如果 Hash 有很多字串並使用大量內存,則 HGETALL 命令可能會出現問題。它有可能會減慢 Redis,因為它需要通過網路傳輸所有數據。
在這種情況下,一個很好的替代方法是HSCAN。 HSCAN 不會一次返回所有字串。它返回一個游標和散列字串及其值在塊中。
需要執行 HSCAN 直到返回的游標為 0 才能檢索 Hash 中的所有字串。
進階資料類型
Sets
Redis 中的 Set 是不同字符串的無序集合——不可能將重複的元素添加到 Set 中。在內部,Set 被實現為哈希表,這就是優化某些操作的原因:成員添加、刪除和查找在 O(1) 中運行,恆定時間。
Sorted Set 與 Set 非常相似,但 Sorted Set 的每個元素都有一個相關的分數。換句話說,Sorted Set 是按分數排序的非重複字符串的集合。可能有具有重複分數的元素。在這種情況下,重複的元素按字典順序(按字母順序)排序。用zadd來新增sorted set。
我們已經討論了很多關於使用 Redis 將數據存儲在內存中的內容。記憶是短暫的。
因此,如果 Redis 實例關閉、崩潰或需要重啟,所有存儲的數據都將丟失。
為了解決這個問題,Redis 提供了兩種處理持久化的機制:Redis 資料庫(RDB)和僅附加文件(AOF)。
這兩種機制可以在同一個 Redis 實例中單獨或同時使用。
RDB 非常適合備份和災難恢復,因為它允許您根據需要每小時、每天、每週或每月保存一個 RDB 文件。這種方法使您可以輕鬆地使用 RDB 文件在任何給定時間恢復任何數據集。
SAVE 命令會立即創建一個 RDB,但應避免使用,因為它會在創建快照期間阻塞 Redis 服務器。應該使用命令 BGSAVE(後台保存);
它與 SAVE 具有相同的效果,但它在子進程中運行,以免阻塞 Redis。
以上並非所有的Redis功能,其他像是redis的發佈訂閱等,請自行Google吧。
No Comment
Post your comment