2016-03-12 29 views
0

所以我加入的Redis到現有的項目,我想緩存系統中的每個用戶是這樣的:緩存在Redis的獨特的電子郵件

'[email protected]' => '101' 

其中101是用戶主鍵字段。 我需要此功能,以便當用戶在網站上註冊時,我們可以非常快速地檢查緩存以查看此電子郵件地址是否已屬於另一個用戶。 我們還可以在用戶更改其帳戶中的電子郵件地址時使用此功能,甚至在登錄時,當用戶提供其登錄詳細信息時,我們可以檢查緩存以查看他們是否提供了唯一的電子郵件地址,然後值(在本例中爲101)會將我們指向它們在users表中的行(也被緩存)。

我只是想知道什麼是最好的方式來存儲在redis中。我應該使用這樣的一些關鍵:

set [email protected] 101 

或者它將使使用哈希表這樣更有意義:

hset [email protected] id 101 

還是有做一些其他的方式? 我基本上只需要一種查詢電子郵件地址的非常有效的方法,並且獲取用戶ID(如果它已經存在)或null(如果電子郵件地址不在系統中)。

回答

0

正如你所說你想使用Redis作爲緩存,所以電子郵件 - > ID不會永遠住在那裏? 在臨時緩存的情況下,您應該使用SETEX - 帶有過期時間的SET版本(下例中爲10秒)。

setex [email protected] 10 101 

並在需要時(例如低於10秒),不要忘了刷新到期:

expire [email protected] 10 

使用HSET代替SET纔有意義,如果你想保持在高速緩存更復雜數據比普通整數或字符串ID。

相關問題