开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):数据预处理-链路统计-数据写入redis】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/670/detail/11634
数据预处理-链路统计-数据写入 redis
内容介绍:
一、数据写入 redis 的思路
二、数据写入 redis 的流程
每个服务器本批次数据访问了多少次(serve_p n),与当前活跃连接数的计算(actveUserNumber)已经讲解完毕了,时间戳在数据写入的过程写入即可。接下来就是将计算出来的两个结果写readies。
一、数据写入 redis 的思路
在两个数据不为空的前提下,将两个数据转换成两个小的map
封装最终要写入 redis 的数据(将两个小的 MAP 封装成一个大的 MAP)
在配置文件中读取出数据 key 的前缀,+时间戳(redis 中对数据的 key)
在配置文件中读取出数据的有效存储时间(数据在 redis 里面存储多长时间)
将数据写入 redis
二、数据写入 redis 的流程
//1.在两个数据不为空的前提下,将两个数据转换成两个小的map
if (!serverCount. isEmpty() & !activeUserCount . isEmpty()){
//将两个数据转换成两个小的map
val serverCountMap=serverCount .collec tAsMap()
val activeuserCountMap=activeUserCount. collectAsMap( )
//2.封装最终要写入 redis 的数据(将两个小的MAP封装成一个大的 MAP)
//serversCountMap;与前端 工程师约定好
//activeNumMap; 与前端 工程师约定好
val Maps=Map(
"serversCountMap" - >serverCountMap,
"activeNumMap" - >activeuserCountMap
将 redis 的数据同步到 mysql 里面,web 是微博前端工程师去进行的,activeUserNumber 也是在 redis 里面读出来的,也是需要前端工程师实现的,按照什么样的格式写进去,前端工程师就按照什么样的格式读出来,所以需要和前端的工程师进行一个约定,
步骤:
webProject->java->quartz->BackupDataQuartz
/**
*每隔两个小时定时获取 redis 上:的链路数据,存到 mysql 对应的表中(datacollect),
*然后删掉 redis 上:已经备份到 mysql 的数据。
*
*/
//3.在配置文件中读取出数据key的前缀,+时间戳(redis 中对数据的key)
根据#监控数据-健标识(分别是数据处理监控,查询监控,预订监控)
Cjuster.key . monitor . dataProcess = CSANTI_ MONITOR_ DP
Cluster.key. Monitor.linkrocess = CSANTI_MONITOR_LP
Cluster.key.monitor . query = CSANTI_MONITOR_QUERY
Cluster.key .monitor .book = CSANTI_ MONITOR_ BOOK
#监控数据有效期-单位秒
Cluster.exptime .monitor = 86400
使用 PropertiesUtil 的 getStringByKey 进行配置文件的读写。
val key=Propertiesutil . getStringByKey( key = " cluster . key. monitor .linkProcess" , propName = "jedisConfig . properties" )+System.currentTimeMillis().to Spring
把时间戳加在 Key 上面
//4.在配置文件中读取出数据的有效存储时间
val t ime-PropertiesUtil . getStringByKey( key =“cluster . exptime . monitor" , propName = "jedisConfig. properties").toInt
//5.将数据写入 redis
val redis=JedisConnectionUtil . getJedisCluster
redis. setex(key,time,Json(DefaultFormats) .write(Maps))
