1. 程式人生 > >[redis資料庫問題] 聊聊你對redis的理解

[redis資料庫問題] 聊聊你對redis的理解

Redis的特性來說:

        redis資料庫是一種非關係型資料庫,資料以key-value的形式儲存,

它是記憶體型資料庫,資料儲存在記憶體中,所以讀寫速度很快。

當然它也支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用,以保證資料的安全。

        Redis不僅僅支援簡單的key-value型別的資料,同時還提供listsetzsethash等資料結構的儲存。

而且Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行

我們以前的做專案中也廣泛的應用到了redis資料庫。

比方說我們之前做的一個電商專案,是一個

B2C型別,用Django開發的,在這個專案中,我們很多地方用到了Redis資料庫。

這個專案採用的是郵件啟用的方式,所以就用了celery非同步伺服器來完成非同步傳送郵件完成啟用。我們在celery非同步伺服器就是用選用了Redis資料庫來做broker做任務儲存。

我們這個專案的session資訊和快取資料也是放在Redis資料庫中。因為我們資料庫用的MySQL,所以session資訊預設是放在MySQL中的,但每次訪問網頁都要去查MySQL,效率太低,所以我們就把session資訊放在Redis資料庫中。同樣的我們未登入使用者用ngnix來給他靜態頁面,登入使用者我們給他的是快取頁面,我們這個快取就是存在

Redis資料庫裡。Django自帶了一個快取系統,我們想把快取存到Redis就需要在settings中配置django-redis-sessions,配置成一個數據庫快取系統,快取和session資訊都可以存在這個Redis資料庫中。

購物車資料是需要有即時性的,所以不能放在快取裡,使用者未登入時我們放在cookie中,使用者登入時,就放在Redis資料庫中,選用Redis資料庫時因為那我們頻繁切換網頁,就需要頻繁去查詢資料庫,Redis讀寫速度更快。而且購物車資訊一般包含user_id, sku_id, countRedis資料庫的hash資料型別更方便儲存和讀取這些資訊。因為hash型別取出來時是字典