一种redis数据缓存的value的检测和分片的方法及其系统技术方案

技术编号:36344620 阅读:18 留言:0更新日期:2023-01-14 17:58
本发明专利技术提供了一种redis数据缓存的value的检测和分片的方法,该方法为:1、设置redis慢查询的阈值,通过日志记录,计算读取时间,如果超过阈值则把慢查询写入日志;2、监控慢查询日志,读取慢查询的redis key,对redis value在10

【技术实现步骤摘要】
一种redis数据缓存的value的检测和分片的方法及其系统


[0001]本专利技术涉及数据缓存
,特别是一种redis数据缓存的value的检测和分片的方法及其系统。

技术介绍

[0002]redis是数据缓存很常选型的中间件,是一个key(键)

value(值)存储系统;redis适合存储少量的热点数据,在系统运行中redis数据缓存的key我们可以严格定义,但redis数据缓存的value是用户难决定,有时很难控制value的大小。如果redis的value过大,可能导致客户端超时阻塞、引发网络阻塞导致读取redis超时等问题。如果在redis操作的时候同步计算和检测redis的value大小,那可能会因为少数大value而影响了整体的存储效率,因为大多数的value都是小的,但又无法放任这些大value不管,因为可能因为这些少数的大value导致客户端超时阻塞引发网络阻塞等情况。

技术实现思路

[0003]为克服上述问题,本专利技术的目的是提供一种redis数据缓存的value的检测和分片的方法,通过分片的方式把一个巨型redis数据缓存的value拆分成多个小value,有效减缓了客户端超时阻塞引发网络阻塞等问题。
[0004]本专利技术采用以下方案实现:一种redis数据缓存的value的检测和分片的方法,所述方法包括如下步骤:
[0005]步骤S1、设置redis数据缓存慢查询的阈值,通过redis数据缓存读取前后日志记录的时间差获取redis读取时间,当redis读取时间超过阈值,则把慢查询的redis数据缓存的key异步写入日志;
[0006]步骤S2、监控慢查询日志,读取慢查询的redis数据缓存的key,读取redis数据缓存的key对应的value如果小于10KB则不进行操作,结束流程,如果大于100KB则进行删除redis数据缓存的key,如果value在10

100KB之间,则进入步骤S3;
[0007]步骤S3、将redis数据缓存的value根据预设值进行按组分片,每组value值的内容为value_1,value_2,value_3,以此类推直到最后一个分片不加后缀结尾;则分组后的分片集合为{(key值,value值_1),(key值_1,value值_2)...(key值_N

1,value值_N),(key值_N,value值)};
[0008]步骤S4、提供一redis读取接口,读取rediss数据缓存key的value,如果value是以_1结尾表示此redis数据缓存是个被分片的value,继续读取下一个数据分片key值_1的数据,以此类推读到最后一个分片,拼接所有分片的字符返回给客户端。
[0009]进一步的,步骤S1的实现方式进一步具体为:设置一个redis慢查询的阈值为100ms,超过100ms的查询则是因为value太大引起的慢查询;通过redis读取前后日志记录的时间差,得到redis的读取时间,如果超过阈值100ms,则把慢查询的redis数据缓存key异步写入日志,不采用同步写入日志的方式是为了不降低系统的吞吐量。
[0010]进一步的,步骤S3的实现方式进一步具体为:将redis数据缓存的value根据预设值进行按组分片,避免单个value太大导致查询单次超时;则分组的方式为:key:value_1;key_1:value_2;key_2:value_3;....key_N

1:value_N;key_N:value,其中N是大于1的整数;则分组后的分片集合为{(key值,value值_1),(key值_1,value值_2)...(key值_N

1,value值_N),(key值_N,value值)}。
[0011]进一步的,步骤S4的实现方式进一步具体为:提供一redis读取接口,通过redis读取接口读取rediss数据缓存key的value,如果value是以_1结尾表示此redis数据缓存是个被分片的value,继续读取下一个数据分片key值_1的数据;而数据分片key值_1对应的value是以_2结尾的,则继续读取下一个数据分片key值_2的数据,即将value的尾部后缀作为索引,去寻找下一个数据分片对应的key的相同尾部后缀,数据分片的最后一个value没有后缀则视为读取到所有的分片数据;则拼接value值_1+value值_2+...+value值_N+value值得到完整数据返回给客户端。
[0012]本专利技术还提供了一种redis数据缓存的value的检测和分片的系统,所述系统包括redis读取时间获取模块、value大小检测模块、分片模块、以及拼接组合模块;
[0013]所述redis读取时间获取模块,设置redis数据缓存慢查询的阈值,通过redis数据缓存读取前后日志记录的时间差获取redis读取时间,当redis读取时间超过阈值,则把慢查询的redis数据缓存的key异步写入日志;
[0014]所述value大小检测模块,监控慢查询日志,读取慢查询的redis数据缓存的key,读取redis数据缓存的key对应的value如果小于10KB则不进行操作,结束流程,如果大于100KB则进行删除redis数据缓存的key,如果value在10

100KB之间,则进入所述分片模块;
[0015]所述分片模块,将redis数据缓存的value根据预设值进行按组分片,每组value值的内容为value_1,value_2,value_3,以此类推直到最后一个分片不加后缀结尾;则分组后的分片集合为{(key值,value值_1),(key值_1,value值_2)...(key值_N

1,value值_N),(key值_N,value值)};
[0016]所述拼接组合模块,提供一redis读取接口,读取rediss数据缓存key的value,如果value是以_1结尾表示此redis数据缓存是个被分片的value,继续读取下一个数据分片key值_1的数据,以此类推读到最后一个分片,拼接所有分片的字符返回给客户端。
[0017]进一步的,所述redis读取时间获取模块的实现方式进一步具体为:设置一个redis慢查询的阈值为100ms,超过100ms的查询则是因为value太大引起的慢查询;通过redis读取前后日志记录的时间差,得到redis的读取时间,如果超过阈值100ms,则把慢查询的redis数据缓存key异步写入日志,不采用同步写入日志的方式是为了不降低系统的吞吐量。
[0018]进一步的,所述分片模块的实现方式进一步具体为:将redis数据缓存的value根据预设值进行按组分片,避免单个value太大导致查询单次超时;则分组的方式为:key:value_1;key_1:value_2;key_2:valu本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种redis数据缓存的value的检测和分片的方法,其特征在于:所述方法包括如下步骤:步骤S1、设置redis数据缓存慢查询的阈值,通过redis数据缓存读取前后日志记录的时间差获取redis读取时间,当redis读取时间超过阈值,则把慢查询的redis数据缓存的key异步写入日志;步骤S2、监控慢查询日志,读取慢查询的redis数据缓存的key,读取redis数据缓存的key对应的value如果小于10KB则不进行操作,结束流程,如果大于100KB则进行删除redis数据缓存的key,如果value在10

100KB之间,则进入步骤S3;步骤S3、将redis数据缓存的value根据预设值进行按组分片,每组value值的内容为value_1,value_2,value_3,以此类推直到最后一个分片不加后缀结尾;则分组后的分片集合为{(key值,value值_1),(key值_1,value值_2)...(key值_N

1,value值_N),(key值_N,value值)};步骤S4、提供一redis读取接口,读取rediss数据缓存key的value,如果value是以_1结尾表示此redis数据缓存是个被分片的value,继续读取下一个数据分片key值_1的数据,以此类推读到最后一个分片,拼接所有分片的字符返回给客户端。2.根据权利要求1所述的一种redis数据缓存的value的检测和分片的方法,其特征在于:步骤S1的实现方式进一步具体为:设置一个redis慢查询的阈值为100ms,超过100ms的查询则是因为value太大引起的慢查询;通过redis读取前后日志记录的时间差,得到redis的读取时间,如果超过阈值100ms,则把慢查询的redis数据缓存key异步写入日志,不采用同步写入日志的方式是为了不降低系统的吞吐量。3.根据权利要求1所述的一种redis数据缓存的value的检测和分片的方法,其特征在于:步骤S3的实现方式进一步具体为:将redis数据缓存的value根据预设值进行按组分片,避免单个value太大导致查询单次超时;则分组的方式为:key:value_1;key_1:value_2;key_2:value_3;....key_N

1:value_N;key_N:value,其中N是大于1的整数;则分组后的分片集合为{(key值,value值_1),(key值_1,value值_2)...(key值_N

1,value值_N),(key值_N,value值)}。4.根据权利要求1所述的一种redis数据缓存的value的检测和分片的方法,其特征在于:步骤S4的实现方式进一步具体为:提供一redis读取接口,通过redis读取接口读取rediss数据缓存key的value,如果value是以_1结尾表示此redis数据缓存是个被分片的value,继续读取下一个数据分片key值_1的数据;而数据分片key值_1对应的value是以_2结尾的,则继续读取下一个数据分片key值_2的数据,即将value的尾部后缀作为索引,去寻找下一个数据分片对应的key的相同尾部后缀,数据分片的最后一个value没有后缀则视为读取到所有的分片数据;则拼接value值_1+value值_2+...+value值_N+value值得到完整数据返回给客户端。5.一种redis数据缓存的value的检测和分片的系统,其特征在于:所述系统包括redis读...

【专利技术属性】
技术研发人员:刘德建叶伟李佳
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1