用redis緩存來實現用戶最近瀏覽的商品列表
1,最近瀏覽的記錄肯定是需要失效時間的
確定使用緩存,緩存可以設置失效時間(最大設置為一個月,但是這已經足夠了),如果使用mysql等數據庫,還需要定時任務清除,很明顯是不切合實際的,
2,最近瀏覽的記錄肯定是有個數限制的,不可能記錄所有的瀏覽記錄
目前使用的主流緩存有 memached和redis兩種(原諒無知的我並不清楚其他的),redis有LTRM來修剪,保證存儲的瀏覽的條數;
3,我們需要在哪里添加保存瀏覽商品的方法
用戶最近瀏覽的商品,肯定是再用戶最近打開商品詳情頁的時候才算瀏覽,這點毋庸置疑;
4,怎么保證每次添加的瀏覽的商品列表按着瀏覽的先后順序排序?
每次用戶的瀏覽商品的ID,可以以用戶的ID作為key,以List作為value,儲存在redis中,而List是有序的,而且,在使用LRANGE的時候能保證先進后出,后進先出的原則,已達到排列在最前面的商品始終是里當前最近瀏覽的那個商品;
5,怎么保證用戶在連續瀏覽同一個商品的時候,不會重復保存商品?
可以使用redis中LREM來移除列表中與參數 value(該商品ID) 相等的元素。同時在使用Lpush重新再List插入最新的瀏覽商品;
6,讀取緩存的時候,又該如何保證分頁?
redis中的LRANGE可以指定獲取指定長度的元素,能夠滿足需要;