本文是有關 Redis 的學習筆記的一部分,相關目錄請參考 Redis 學習筆記(1)-簡介。
在把Redis這個技術元素納入你的應用系統前,需要瞭解這個技術元素特點,從其原理上掌握這些特點有助於你更好使用這些功能。例如Redis持久化是非同步的,在較為極端情況下有可能會遺失宕機時間點上當下的資料,但是關聯式資料庫在某些設定值下也會有類似的狀況,瞭解這些狀況後,你更容易決定要不要在重要資料上使用Redis,或者你可以在AP層透過自己的程式邏輯來補足這些弱點。
接下來我們開始說明Redis 不同於一般關聯式資料庫的特點。
鍵值資料庫是一種非關聯式資料庫,使用簡單的鍵值方法存放資料。鍵值資料庫將資料存放為鍵值組集合,而其中的鍵做為唯一識別碼。鍵和值不限種類,從簡單物件到複雜的複合物件皆可。其資料結構類似下圖。
快取可以藉由減少產生內容所需的工作,大幅改善應用程式的效能和擴充性。快取最適合用於不常變動 且 產生成本較高的資料。快取會建立資料的複本,而這些資料的傳回速度會比來源快許多。其操作次序類似下圖。
單線程模型還帶了以下好處:
其結構如下圖:
Redis 有二個持久化機制: RDB 和 AOF。
RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。
在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。
在 Redis 运行时, RDB 程序将当前内存中的数据库快照保存到磁盘文件中, 在 Redis 重启动时, RDB 程序可以通过载入 RDB 文件来还原数据库的状态。
每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。这样的话, 当 Redis 重新启时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。
在這一篇學習中,我們說明了Redis的幾個重要的特點。Key-Value的結構說明其使用方式和關聯式資料庫不同,快取說明其資料皆放置在記憶體中所以效能有保證,單線程則保證操作的原子性,最後持久化則說明資料不會因停機而遺失。
參考資料: