python django redis 集合 实现在线人数
redis 版本 pip install redis==2.10.6
settings.py
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
middlewore.py
def process_request(self,request): ip=get_ip(request) # 获取ip add_ipredis(ip) # 添加集合
# 添加集合 和获取ip 函数
def get_ip(request):
print(request,'555')
if request.META.get('HTTP_X_FORWARDED_FOR'):
ip = request.META.get("HTTP_X_FORWARDED_FOR")
return ip
else:
ip = request.META.get("REMOTE_ADDR")
return ip
def add_ipredis(ip):
count_set = get_redis_connection('default')
count_set.zadd('onlines',ip,time.time()) # 存入有序集合 加入时间戳
# count_set.zadd("onlines",{ip:int(time.time())})
# 从当前时间前两个小时到当前时间前一个小时区间进行删除
count_set.zremrangebyscore('onlines',int(time.time())-7200,int(time.time())-3600 )

浙公网安备 33010602011771号