项目中使用redis在service层缓存数据,但针对页面的搜索功能,如何针对搜索结果来定义缓存的key呢?个人觉得不同用户搜索的关键字习惯不同,如果以搜索的关键字作为缓存key的关键部分,会导致该缓存的命中率很低,失去了意义。但确实也没想到好的办法。求各位大神指教。
对搜索词做一个计数统计,保存在数据库里(或者就保存在redis里),然后做一个排序,被搜索量最大的词(前20个),以搜索词为key,把搜索结果做value缓存起来,下次有人搜这个词直接取缓存数据。
几点注意事项
一,缓存过期时间不要太长,不然搜索结果实时性太差,
二,只有搜了之后有结果的词才需要缓存,
三,按搜索量排序寻找热门搜索词最好按时段,比如最近一个月最热门的词,把历史数据都算上统计总量的话,往往与实际偏差较大。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。