条件构造缓存Key以及转换Hash值存储
2025年4月20日大约 1 分钟
条件构造缓存Key以及转换Hash值存储
思路:当数据过长或者含有中文等时,常用做法都是进行转换得到对应的Hash值,再进行存储
- 在分页查询的业务场景中,如果只根据Number和SIze作为数据缓存的Key,那么如果有多个查询条件加入的时候一查询依旧还为没有加条件参数时的数据。
- 所以此时就要把参数条件也作为Key的一部分,但是由于参数中会含有中文或者太长等,所以先把参数条件转为对应的Hash值存储。
1.只根据Number和SIze作为数据缓存的Key
不加查询条件
{
"pageNumber": 1,
"pageSize": 10,
}
加了查询条件
{
"pageNumber": 1,
"pageSize": 10,
"category": 生活,
}
此时上面两者查询到的都是同一份缓存数据
2.条件构造缓存Key并转为Hash值存储
原条件参数对象字符串,如果此时直接用这个作为Key的一部分。
{
"id": 1,
"category": "生活记录",
"description": "回忆"
}
此时的key例如:key="pageNumber:1...category="生活记录"description="回忆""
那很离谱了
鉴于这种情况,所以把条件参数部分先转为对应的Hash值
转换后 此时的key例如:key="5eb63bbbe3102c494b5fba78ad91d5d3"
很优雅!
3.完整缓存Key
String pre="piu:list:"
String key=pre+条件参数的Hash值
picture:list:e9a586fc5704a19d6db3bf79f67c3121