if(redis中是否存在key){
if(get(key)!=''){
返回redis数据
}
} else {
查询数据库 查到了就放到redis去 查不到也写到redis去 key=''
}
这个是我解决 如果一个key不存在的时候 让他不去访问数据库 在高并发的时候不至于挂掉
但是同时也有一个问题了 如果有人恶意请求很多不存在的key 那么我的内存会生成很多key='' key1='' 这样的数据 会占用我内存的空间 针对这个要如何处理呢
if(redis中是否存在key){
if(get(key)!=''){
返回redis数据
}
} else {
查询数据库 查到了就放到redis去 查不到也写到redis去 key=''
}
这个是我解决 如果一个key不存在的时候 让他不去访问数据库 在高并发的时候不至于挂掉
但是同时也有一个问题了 如果有人恶意请求很多不存在的key 那么我的内存会生成很多key='' key1='' 这样的数据 会占用我内存的空间 针对这个要如何处理呢
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
1 回答1.9k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
按你的描述,猜测你将不存在的key也写入缓存是想要减少对无效数据查询数据库的次数。这个可以使用一定的规则,对key进行验证。比如一个32位字符串,你加入一定的校验机制,即使是一个比较简单的校验都能帮你过滤很大一部分无效的key。另外可以将所有的无效key放在一个redis的hash当中。这个hash设置一个比较合理的过期时间,这样可以相对控制无效key的大小