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 )

  

  

原文地址:https://www.cnblogs.com/zhangshijiezsj/p/14174939.html