在我们的实际开发中,有时候会用到一些功能,比如签到和一些数据统计,那么这些功能,我们不可能去建立一些表去专业为签到和数据统计去服务,因为签到和数据统计这些都会导致这个表的数据越来越多,导致服务器整体性能下降,那么我们就可以用redis的一些功能来处理:
-
签到功能:
- 我们签到可以使用redis中的位图bitmap功能来实现,具体的bitmap功能介绍可以看这里:bitmap功能介绍
-
数据统计:
- 如果我们有一个功能是统计每天这个功能模块有多少用户访问,我们就可以使用HyperLogLog来统计:HyperLogLog功能介绍
-
在django中的实现:
class TestAPIView(GenericAPIView):
"""签到和uv统计实验"""
permission_classes = [IsAuthenticated]
def get(self, request):
# 毫秒的单位是f
str_time = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
# 位图
redis_connect = django_redis.get_redis_connection(alias='bitmap')
# 表示这个用户2020年09月签到,0表示未签到,1表示签到
redis_connect.setbit('user_id_2020_09', 1, 1)
# 页面数据统计(默认去重)
redis_connect.pfadd('hyperlog_2020_09_01', *['user1', 'user2', 'user2', 'user2', 'user3'])
return APIResponse.success(data=[], message="签到成功")