2015-07-01 81 views
0

我構建安全服務作爲組成應用程序的一組服務的一部分。我正在考慮使用Redis存儲會話。會話是這樣的數據結構:用於會話存儲的Redis

{ 
    string : sessionToken 
    DateTime : expiryUtc 
    string[] : permissionKeys 
} 

我只需要創建,讀取和刪除會話。如果我可以讓Redis刪除過期會話,那麼很好但不是必需的。作爲Redis的一個小菜鳥,我有一些閱讀需要做,但是有Redis經驗的人可以給我任何正確的方法來實現這個目標,假設Redis是一個不錯的選擇。順便說一下,我在Mono平臺上,並且迄今爲止選擇了StackExchange.Redis客戶端,因爲在某個階段我想要對Redis進行集羣。我願意改變這種選擇。

+0

既然你說的是單聲道,內置的redis會話狀態出現在我的腦海。 [這裏是鏈接。](http://blogs.msdn.com/b/webdev/archive/2014/05/12/announcing-asp-net-session-state-provider-for-redis-preview-release。 aspx)'PermissionKeys'是存儲在會話中的對象。 –

回答

1

您可以使用Redis散列,它們將與您的結構相匹配:http://redis.io/topics/data-types-intro#redis-hashes
會話令牌可以是整個散列的關鍵字。 StackExchange Redis客戶端具有KeyExpire方法,可以使用DateTime參數,因此您可以讓Redis過期您的密鑰。
在Redis哈希中,您不能擁有嵌套結構,因此您的permissionKeys和任何其他將進入內部的值必須存儲爲簡單值 - 您可以將它們序列化爲json。
另外一個哈希值是允許進行內存優化:http://redis.io/topics/memory-optimization#use-hashes-when-possible如果您將創建多個會話(因爲Redis會將所有這些會話存儲在RAM中),這可能非常有用。

相關問題