redis key的前缀统一设置

在多业务线的开发中,Redis Key的前缀管理变得复杂。为了解决这一问题,文章提出了一种思路,即在Java数据序列化时自动添加指定的业务线前缀,从而简化开发者的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发过程中经常会遇到设置redis key前缀的场景,尤其是有多条业务线,op都会给各条业务线分配特定的前缀,例如:baidu:baijiayun:xxxxx ,开发者每次拼接key的时候都要去拼接该前缀,很是麻烦,这里提供一种思路,java数据传输之前要通过,某种方式(各种序列化框架)序列化,此时可以在业务完成之后,在序列化的时候将前缀加进去

@Configuration
public class AlyRedisConfigration {

    @Value("${redis.commonPrefix}")
    private String prefix;

    @Bean
    @ConfigurationProperties(prefix = "redis")
    public SingleRedisConfig alyRedisConfiguration() {
        return new SingleRedisConfig();
    }

    @Bean("alyConnectionFactory")
    public LettuceConnectionFactory alyConnectionFactory(SingleRedisConfig alyRedisConfiguration) {
        return alyRedisConfiguration.getConnectionFactory();
    }

    @Bean
    public AlyRedisTemplate alyRedisTemplate(
        @Qualifier("alyConnectionFactory") LettuceConnectionFactory alyConnectionFactory) {
        AlyRedisTemplate alyRedisTemplate = new AlyRedisTemplate();

        alyRedisTemplate.setConnectionFactory(alyConnectionFactory);
        alyRedisTemplate.setKeySerializer(prefixRedisSerializer());
        return alyRedisTemplate;
    }

    private RedisSerializer<String> prefixRedisSerializer() {
        return new PrefixRedisSerializer(prefix);
    }

    /**
     * 给redis的key加上前缀,如果不需要前缀,可以通过Template的execute方法直接调用connection里的操作。
     */
    static class PrefixRedisSerializer implements RedisSerializer<String> {
        private final RedisSerializer<String> delegate = RedisSerializer.string();

        private final String prefix;

        public PrefixRedisSerializer(String prefix) {
            this.prefix = prefix;
        }

        @Override
        public byte[] serialize(String s) throws SerializationException {
            return delegate.serialize(prefix + s);
        }

        @Override
        public String deserialize(byte[] bytes) throws SerializationException {
            return delegate.deserialize(bytes);
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值