前言:无论是开发或者生产,都有刷新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数据

以下为对应的图

redis 如何更新数据 redis更新key_加载

redis 如何更新数据 redis更新key_加载_02

 

建表语句

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常用配置_缓存刷新配置';