結論:Redis 不能當數據用。
原因:我們理解的數據庫,無論是 SQL、NoSQL、NewSQL,至少要是讀寫壹致的。也就是說如果客戶端發起壹個寫請求,如果服務器回復了成功,就算是之後服務器異常重啟了,這個數據壹樣是能被讀到的。
而 Redis 不是讀寫壹致的。
答案裏有人提到說 Redis 也會持久化,但是就算是 AOF,也是給客戶端應答後,再定時寫磁盤的,都是不壹致的。
這裏還沒討論磁盤損壞的問題。
有幾個基於持久化存儲的、兼容 Redis 協議的系統可以當作數據庫使用,比如 SSDB、ARDB、Pika 等。但是據我所知,這些項目現在都不支持集群,沒辦法動態擴容。
另外,還有壹個很麻煩的問題,就是剛才提到的 磁盤損壞問題,如果數據只存放在壹個單點,壹旦有磁盤損壞,就會造成數據丟失,所以,即使是同步持久化的但是沒有集群備份數據的系統,用作數據庫也是有很大風險的。