前言:无论是开发或者生产,都有刷新redis_key的操作,但像一些业务使用的redis_key并没有一个统一的地方去管理(甚至有时需要找代码定位),基于此种思考,做了个可配置化刷新缓存架构
核心思想:基于操作,以及K-V的加载来实现不同的策略方式刷新(思路简单但实现相对复杂,具体可以看建表语句)
目前实现维度基于string和hash常见操作
根据四个维度选择具体的策略更新类
handle_type:操作类型 更新/删除
key_kind:string hash
key_type:不通过sql加载,1 通过sql加载
value_type:配置值,sql查询string数据 ,sql查询对象存对象值 ,sql查询存list数据
以下为对应的图
建表语句
drop table if exists cache_fresh_bean;
create table cache_fresh_bean(
id int auto_increment primary key,
key_kind tinyint default 0 comment 'key的种类;0-string 1-hash',
key_name varchar(200) comment '缓存key',
key_param text comment '拼接key的参数,逗号分割;',
key_type tinyint default 0 comment '0-string不通过sql加载,1-string 通过sql加载;',
value_param text comment '拼接key的参数,逗号分割;',
value_type tinyint default 0 comment '0-不加载sql,1-加载sql string ,2-sql Object ,3 sql list',
count_expression text comment 'sql统计表达式',
select_expression text comment 'sql查询表达式,不带limit,分页查会自动计算',
page_status tinyint default 0 comment '分页 0-使用默认limit 2000 1-使用select_expression表达式的 2-使用count_expression分页',
expire_time int UNSIGNED comment 'key存活时间',
expire_unit int comment '单位 TimeUnit中的 nanoseconds-纳秒 microseconds-微秒 milliseconds-毫秒 seconds-秒 minutes-分 hours-小时 days-天',
status tinyint default 0 comment '0-未执行,1-正在执行 2-执行成功 3-执行失败',
remark text comment '备注' ,
handle_type varchar(60) comment '刷新类型 0-删除 1-刷新',
create_time datetime default now() comment '创建时间',
create_by varchar(100) comment '创建人',
update_time datetime default now() ON UPDATE now() comment '更新时间',
update_by varchar(100) comment '更新人'
) comment 'redis常用配置_缓存刷新配置';