解讀 "Retwis官網" 例子 Redis需要考慮需要哪些keys以及對應的value使用合適的數據類型進行存儲。在retwis例子中,我們需要users,user的粉絲列表, user的關註用戶列表等等。 Users 和傳統的關係型資料庫一樣,每個用戶有一個唯一的id關聯,使用INCR創建唯一的 ...
解讀Retwis官網例子
Redis需要考慮需要哪些keys以及對應的value使用合適的數據類型進行存儲。在retwis例子中,我們需要users,user的粉絲列表, user的關註用戶列表等等。
Users
和傳統的關係型資料庫一樣,每個用戶有一個唯一的id關聯,使用INCR創建唯一的id。
除了這些值以外,有時候我們希望根據用戶名找到用戶的id,所以每增加一個用戶信息,我們需要存用戶的id。因為redis沒法根據值來查詢key。
HSET和HMSET的區別就是,HMSET允許設置多個field/value。
Followers(粉絲), Following(關註), Updates(更新)
用戶的粉絲和關註都使用Sets集合存儲,因為需要是唯一的集合,並且可以使用Sorted sets有序集合存儲,這樣可以根據關註或被關註的時間進行排序。
接下來先再添加一個用戶
用戶2關註用戶1
用戶1增加一個粉絲
通過ZRANGE命令查詢所有的關註對象
ZRANGE key start stop
stop為-1表示查到集合中倒數第一個數,-2查到倒數第二個數,以此類推。
接下來使用List來存儲用戶的更新,並且按照更新的時間倒序,以及使用LRANGE來進行翻頁查詢。
為了避免將session存在應用服務里,因為應用服務可以部署在不同的機器上,所以可以將session放在redis里,持久存儲。
如果用戶認證成功,需要將生成的session添加到用戶hash結構里。同時,如果我們需要根據session得到用戶id。
這樣就基本上能滿足twitter-clone例子中的數據存儲