class RecommendJobView(GenericAPIView): """推薦職位視圖""" # 更具用戶瀏覽最多的職位的(技術棧)的倒序,序列化器返回數據和最新數據一樣,因為存儲數據和查詢數據都與redis有關,所以不適用ListAPIView serializer_class = PostJobSerializer def perform_authentication(self, request): pass ... def post(self, request): # 用戶瀏覽數據存儲在redis,user_id作為主鍵,采用list存儲職位id serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) redis_conn = get_redis_connection('job') pl = redis_conn.pipeline() # 去重 pl.lrem('user_id_%s' % user.id, 0, job_id) # 保存,增加 pl.lpush('user_id_%s' % user.id, job_id) # 保留規定長度的數據 pl.ltrim('user_id_%s' % user.id, 0, constants.MAX_Job_VIEW_HISTORY-1) pl.execute() ...