redis日常使用汇总--持续更新
工作中有较多用到redis的场景,尤其是触及性能优化的方面,传统的缓存策略在处理持久化和多服务间数据共享的问题总是不尽人意,此时引入redis,但redis是单线程的key-value数据库,性能优化也是有限,尤其是处理并发访问的时候,所以在最终选择论证时,还是要考虑具体场景。
1、人脸考勤信息记录
人脸考勤信息,摄像头每次识别到人脸,都加以记录,用以后续数据分析,可以作为考勤信息记录、也可以分析人员轨迹评判行为。初始考虑到,存储在关系型数据库中,但纵向存储数据量很大,在不进行分库分表、配置分布式集群的情况下,很难满足日常的使用,效率执行将十分低下。综上,选择使用redis作为数据存储载体,以天为级别存储考勤记录的track,便于后续的数据分析调度。eg:粒度设为 人-日期,value为 时间戳-摄像头编号。
2、模拟队列--业务逻辑耗时长接口调用
这种场景十分普遍,以近期实际应用举例。小视频搜索的接口开发完毕,但因从hbase获取数据,后台逻辑多次处理筛选、排名,以及网络因素,耗时多在10-20 s ,远远不符合200ms接口响应时间的标准。这是采取的策略为,请求方将视频路径存入redis,服务方逐次取,处理完成,调用redis-value中的回调url,异步返回结果给请求方。单独一个线程持续从redis获取(相关取的策略-定时作业-为空的延时),多线程分配-处理搜索逻辑,RestTemplate处理回调。