马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
业务场景
在XXXX项目中把A网的过车数据传到B网中,此中做了一个业务处理处罚,就是如果由于网络大概其他缘故起因导致把数据传到B网失败,就会把数据临时先存到redis里,而且实行定时任务重新发送失败的。
题目
不外现场的环境比力不稳固。出现题目的缘故起因是XX平台的云存储忽然崩掉,技能与总部云存储研发的同事花了较长的时间,末了才把平台重新规复,在此期间由于无法从云存储中读取图片导致发送过车数据失败,且柳州逐日车流量较大。末了导致平台的redis积蓄了大量数据,而平台其他组件也必要依赖redis,进而影响整个平台的运行。
办理方案
在存储数据前读取redis里的数据占用率百分比,然后设置文件里有个给我们设置的数值,如果redis里实际的占用率高出设置的这个数值,每当放入一条新的数据就会去除一条最旧的数据。若没有高出这个设置值,则按正常存入redis。
下面是把大多大概必要用到的性能指标封装到一个实体类里
RedisInfo
- public class RedisInfo {
- private static Map<String, String> map = new HashMap<>();
- static {
- map.put("redis_version", "Redis 服务器版本");
- map.put("redis_git_sha1", "Git SHA1");
- map.put("redis_git_dirty", "Git dirty flag");
- map.put("os", "Redis 服务器的宿主操作系统");
- map.put("arch_bits", " 架构(32 或 64 位)");
- map.put("multiplexing_api", "Redis 所使用的事件处理机制");
- map.put("gcc_version", "编译 Redis 时所使用的 GCC 版本");
- map.put("process_id", "服务器进程的 PID");
- map.put("run_id", "Redis 服务器的随机标识符(用于 Sentinel 和集群)");
- map.put("tcp_port", "TCP/IP 监听端口");
- map.put("uptime_in_seconds", "自 Redis 服务器启动以来,经过的秒数");
- map.put("uptime_in_days", "自 Redis 服务器启动以来,经过的天数");
- map.put("lru_clock", " 以分钟为单位进行自增的时钟,用于 LRU 管理");
- map.put("connected_clients", "已连接客户端的数量(不包括通过从属服务器连接的客户端)");
- map.put("client_longest_output_list", "当前连接的客户端当中,最长的输出列表");
- map.put("client_longest_input_buf", "当前连接的客户端当中,最大输入缓存");
- map.put("blocked_clients", "正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量");
- map.put("used_me
复制代码 |