提示:redis
提示:redis
1.Hash实现
代码如下(示例):
# 获取当前请求ip IP = self.request.remote_ip # 1.使用hash实现 key = IP + 'iplist' # 获取存的数据 ip = r.hash_getall(key) # 如果存在 if ip: # 获取缓存中的时间 t = r.hash_getone(key, 'time') # 查看是否过期 # 当前时间 - 缓存中的时间 大于60 if int(time.time()) - int(t.decode()) > 60: # 删除缓存 r.del_key(key) return self.finish({"code": 400}) else: # 获取缓存中的获取验证码的次数 count = r.hash_getone(key, 'count') if int(count) >= 3: return self.finish({"code": 400, "msg": "同一个IP,一分钟内不得连续三次获取验证码"}) else: # 对缓存中的次数加1 r.jiajian_hash(key, 'count', 1)
2.字符串(str)实现
代码如下(示例):
# 获取当前请求ip IP = self.request.remote_ip v = r.str_get(IP) if v: strlist = v.decode().split(':') if int(strlist[0]) > 3: return self.finish({ 'code': 400, 'msg': "同一个IP,一分钟内不得连续三次获取验证码" }) sum = int(strlist[0]) + 1 times = 60 - (int(time.time()) - int(strlist[1])) v = str(sum) + ':' + str(int(strlist[1])) r.str_setex(IP, v, times) else: r.str_setex(IP, str(1) + ':' + str(int(time.time())), 60) # 如果没有,就将当前手机号加入redis r.list_push("smsmobile", mobile) self.write({"code": 200, "msg": "ok"})