Redis不同环境缓存同一条数据,数据内部值不同

背景

       现实中,本地环境(dev)和开发环境(feature)会共同使用相同的中间件(本篇拿Redis举例),对于不同环境中的,图片、视频、语音等资源类型的预览地址url,需要配置不同的ip和port地址;如何优美的解决它?

解决方案

  1. 使用配置,不同环境配置不同的 数据库索引:database: 0-15;但随之引起的问题就是,如果Redis是集群怎么办?Redis 集群不像单机版本的 Redis 那样支持多个数据库,集群只有数据库 0,而且也不支持 SELECT 命令。
  2. 对于资源型url数据,使用相对路径,到门户层,或者前端自己拼接;这种深入业务的使用方式,需要很多程序员的协作,并且花费很多沟通、文档、测试时间,最不可取;话分两头:如果是大型项目,并且无法保证公网ip或域名唯一的项目,也只能通过业务方式解决;
  3. 使用@Cacheable 的keyGenerator 属性;不同环境生成不同的缓存key, 从而保证不同公网访问的数据中 图片、视频等预览地址不同;这样顺便解决不同公网的跨域问题;

keyGenerator 使用

项目中添加下方类CacheKeyGenerator:

import java.lang.reflect.Method;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;

@Component
@Slf4j
public class CacheKeyGenerator implements KeyGenerator {

    @Value("${spring.profiles.active}")
	private String profilesActive;

    @Override
    public Object generate(Object target, Method method, Object... params) {
        Long id = (Long) params[0];
        String cacheKey = new StringBuilder(profilesActive).append("_").append(id).toString();
        log.info("[cacheKeyGenerate],cacheKey={}", cacheKey);
        return cacheKey;
    }

}

在需要缓存的Service方法上添加@Cacheable注解:

@Cacheable(cacheNames = CacheNames.DETAIL, keyGenerator = "cacheKeyGenerator")
public XXXXVo queryById(Long id){
    XXXX;
    return vo;
}
//请原谅不能贴源码出来;

redis下存储最终效果:

相关推荐

  1. 数论7-

    2024-01-11 10:30:02       10 阅读
  2. vue admin pro 角色不同显示页面

    2024-01-11 10:30:02       14 阅读
  3. nginx配置设备访问不同地址

    2024-01-11 10:30:02       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 10:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 10:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 10:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 10:30:02       18 阅读

热门阅读

  1. 【STM32读取HX711的函数】

    2024-01-11 10:30:02       34 阅读
  2. Git命令笔记

    2024-01-11 10:30:02       27 阅读
  3. C# 学习笔记2-控制流与类型转换

    2024-01-11 10:30:02       32 阅读
  4. 如何使用設置靜態住宅IP

    2024-01-11 10:30:02       36 阅读
  5. Mybatis多表查询

    2024-01-11 10:30:02       34 阅读
  6. 面试算法109:开密码锁

    2024-01-11 10:30:02       35 阅读
  7. 代码随想录算法训练营——数组篇总结

    2024-01-11 10:30:02       29 阅读
  8. 【SEO优化】之html语义化标签

    2024-01-11 10:30:02       40 阅读
  9. Leetcode17-好数对的数目(1512)

    2024-01-11 10:30:02       34 阅读
  10. 【水文】判断质数

    2024-01-11 10:30:02       36 阅读