簡要介紹
Redis
是一個非關係型數據庫(NoSql),可以存儲鍵(Key)與5種不同類型的值(value)之間的映射。- 通過複製,持久化(AOF和RDB)和客戶端分片等特性來滿足生產環境所需。
Redis
是單核的。
Redis與其他數據庫對比
Redis與Memcached
Redis
支持倆種方式,AOF和RDB來持久化磁盤中,而Memcached
不支持。Redis
支持五種數據結構,(String,List,Set,Hash,Zset);Memcached
支持String
。
Redis的應用的簡單例子
登錄與Cookie
-
一次請求過程:
- 客戶端向服務器端發起請求,服務器進行解析。
- 將請求,轉發到某個處理器上。
- 可能涉及到數據庫的相關操作。
- 處理器將處理之後的數據,對模板進行渲染。
- 處理器將渲染後的模板,作爲對客戶端請求的響應。
這種情況下,請求是無狀態的。服務器沒有存儲請求相關信息。
-
常見的登錄功能中,
cookie
常用來存儲用戶相關信息。 -
cookie
有倆種常見的方法來進行存儲。一種是簽名(singed)cookie,一種是令牌(token)cookie。- 簽名:通常存儲用戶名,ID,最後一次登錄時間等其他網站需要的信息。
- 優點:驗證cookie的信息都包含在裏面,也可以包含額外的信息。驗證比較容易。
- 缺點:正確的處理簽名很難,很容易忘記對簽名進行處理,或者忘記簽名處理,容易造成安全漏洞。
- 令牌:存儲一串隨機字符作爲令牌,數據庫根據令牌來查找擁有者。
- 優點:添加信息容易,體積小,客戶端發送請求快。
- 缺點:需要在服務器中存儲更多的信息,如果是關係型數據庫,代價比較大。
- 簽名:通常存儲用戶名,ID,最後一次登錄時間等其他網站需要的信息。
-
使用
Redis
的散列結構來存儲相關信息,訪問速度快,減輕關係型數據庫壓力。