1 回答

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
簡而言之,Redis是一種強(qiáng)大的key-value數(shù)據(jù)庫,之所以強(qiáng)大有兩點:響應(yīng)速度快(所以數(shù)據(jù)內(nèi)存存儲,只在必要時寫入磁盤),特性豐富(支持多種數(shù)據(jù)類型,以及各類型上的復(fù)雜操作)。
事實上,Redis的一個重要特性就是它并非通常意義上的數(shù)據(jù)庫,雖然稱之為數(shù)據(jù)庫是因為它可以為你存儲和維護(hù)數(shù)據(jù),但它并不像關(guān)系數(shù)據(jù)庫那樣提供任何的SQL方言。不過不用擔(dān)心,Redis并不是吞噬數(shù)據(jù)的黑洞,它只是不支持SQL及相關(guān)功能,但卻提供了穩(wěn)健的協(xié)議用于與之交互。
在Redis中,沒有數(shù)據(jù)表的概念,也無須關(guān)心select、join、view等操作或功能,同時也不提供類似于int或varchar的數(shù)據(jù)字段。你面對的將是相對原始的數(shù)據(jù)集合及數(shù)據(jù)類型。
探索之二:Available datatypes
下面我們深入看下這個奇怪的數(shù)據(jù)庫是如何工作的。如上所見,Redis是基于key-value范式存儲數(shù)據(jù),所以先來重點看下"key"的概念。
key本質(zhì)上就是簡單的字符串,諸如"username"、"password"等。在定義key時,除了不能使用空格,你可以隨意的使用普通的字符、數(shù)字等,像".",":","_"等在定義key時都能正常使用,所以像"user_name", "user:123:age", "user:123:username"都是不錯的key的定義方式。
不像RDBMS中的字段名稱,這里的key是Redis中的重要組成部分,所以我們必須在處理key時多加小心。在下面的講述中,Redis并沒有table的概念,所以像"SELECT username from users WHERE user_id=123;"這種簡單任務(wù)都只能換種方式實現(xiàn),為了達(dá)到這種目的,在Redis上,一種方式是通過key "user:123:username"來獲取結(jié)果value。如你所見,key的定義中攜帶了神秘信息(像user ids)。在Redis中,key的重要性可見一斑。(其他key-value數(shù)據(jù)庫中key的地位也是如此。)
- 1 回答
- 0 關(guān)注
- 1350 瀏覽