最近想实现一个需求,如何使用Java执行redis的config命令呢?
因为使用到spring-boot-starter-data-redis,最初我想到的是RedisTemplate.class,从中是否能找到实现的方法。
但是结果是令人沮丧的,我并没有找到相关的实现方法。
最后看源码,找到了它的实现方式:
最重要的一点是需要从spring容器中将RedisConnectionFactory.class的bean取出来
@Service
public class BaseServiceImpl implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
BaseServiceImpl.applicationContext = applicationContext;
}
/**
* 给client-output-buffer-limit配置pubsub的大小
*/
private void initConfig(){
RedisConnectionFactory bean = applicationContext.getBean(RedisConnectionFactory.class);
RedisConnection connection = bean.getConnection();
connection.setConfig("client-output-buffer-limit", "pubsub 0 0 240");
}
}
只是执行config set命令并不能完全满足我的需求,我其实想将配置信息持久化到redis.conf文件中,这就需要执行config rewrite命令,但是spring-boot-starter-data-redis中并没有找到这个命令的实现方式
官方文档并不支持这个命令,目前还没有找到这个命令的实现方式,如果知道的,也欢迎评论。