if(redis中是否存在key){ if(get(key)!=''){ 返回redis数据 }}else{ 查询数据库查到了就放到redis去查不到也写到redis去key=''}这个是我解决如果一个key不存在的时候让他不去访问数据库在高并发的时候不至于挂掉但是同时也有一个问题了如果有人恶意请求很多不存在的key那么我的内存会生成很多key=''key1=''这样的数据会占用我内存的空间针对这个要如何处理呢
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
按你的描述,猜测你将不存在的key也写入缓存是想要减少对无效数据查询数据库的次数。这个可以使用一定的规则,对key进行验证。比如一个32位字符串,你加入一定的校验机制,即使是一个比较简单的校验都能帮你过滤很大一部分无效的key。另外可以将所有的无效key放在一个redis的hash当中。这个hash设置一个比较合理的过期时间,这样可以相对控制无效key的大小
添加回答
举报
0/150
提交
取消