Configuração do Spring Boot redis e o uso de vários tipos de dados no redis em Java

Continuando com o artigo anterior: documento de exemplo Swagger de integração do projeto Spring Boot 

A diferença entre StringRedisTemplate e RedisTemplate:

  • Os dados dos dois não são comuns ; ou seja, StringRedisTemplate só pode gerenciar dados em StringRedisTemplate e RedisTemplate só pode gerenciar dados em RedisTemplate
  • O método de serialização é diferente. RedisTemplate usa JdkSerializationRedisSerializer. Ao armazenar dados, os dados serão serializados em uma matriz de bytes e, em seguida, armazenados no banco de dados Redis. StringRedisTemplate usa StringRedisSerializer.

  • StringRedisTemplate é usado principalmente para armazenar strings, e o tipo genérico de StringRedisSerializer especifica String. Ao salvar o objeto, ele reportará um erro: não pode ser convertido em String. A visibilidade é forte e mais fácil de manter. Se for todo o armazenamento de string, considere usar StringRedisTemplate

  • RedisTemplate pode ser usado para armazenar objetos, mas precisa implementar a interface serializável e armazená-la em uma matriz binária. O conteúdo não é legível. Se você quiser ter legibilidade, então Solução 1: converta manualmente em uma string json e armazene de novo. A recuperação dos dados requer a solução de desserialização 2.: Use outros métodos de serialização

Compreenda o Redis e use o Redis em projetos Spring Boot

Use o RedisTemplate para operar o Redis na primavera

Resumo dos métodos comuns do RedisTemplate

Instruções de coleta de mapas RedisTemplate-opsForHash (3)

Uma exceção no Redis: não é possível obter conexão Jedis

A modificação da senha do Redis não tem efeito

 

configuração do parâmetro redis.conf

redisConfig 类 :

@Configuration
public class RedisConfig {

    @Bean
    @ConditionalOnMissingBean(name = "redisTemplate")
    public RedisTemplate<String, Object> redisTemplate(
            RedisConnectionFactory redisConnectionFactory) {

        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory);
        //template.setKeySerializer(jackson2JsonRedisSerializer);
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        //template.setHashKeySerializer(jackson2JsonRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

    @Bean
    @ConditionalOnMissingBean(StringRedisTemplate.class)
    public StringRedisTemplate stringRedisTemplate(
            RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

Versão de configuração XML:

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
	<property name="connectionFactory" ref="jedisConnFactory"/>  
	<property name="keySerializer"><!--处理KEY乱码问题-->
		<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
	</property>
	<property name="hashKeySerializer"><!--处理KEY乱码问题-->
		<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
	</property>
	<property name="valueSerializer">
		<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>
	</property>
	<property name="hashValueSerializer">
		<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>
	</property>
</bean> 

dependência redis:

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

Modificação do arquivo de configuração redis.conf no ambiente linux:

Comandos usados:

编辑文件
vim redis.conf

关键字搜索 
/关键字
键入 n 查找下一出

修改 
    键入  i
退出
    键入 esc
保存 
    :wq
不保存
    :q!

Configure a senha de conexão:

requirepass root

Habilite o daemon: 

daemonize yes

Cancelar modo de proteção:

protected-mode no

 Comentebind 127.0.0.1 关闭只能本机访问的限制:

#bind 127.0.0.1

Configuração de firewall Abra a porta 6379:

查看6379防火墙状态
firewall-cmd --zone=public --query-port=6379/tcp

开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent 

重载  ==>执行此命令 开放端口才能生效
firewall-cmd --reload

再次查看   返回为yes 即表示配置成功
firewall-cmd --zone=public --query-port=6379/tcp

Após modificar o arquivo de configuração, lembre-se de reiniciar o serviço :! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

./redis-server ./redis.conf

 

Exemplo de configuração do Redis:

Há um problema: o cliente padrão na versão 2.x do springboot é  lettuceimplementado usando, se você substituir jedis no arquivo de configuração porlettuce则项目启动报错

Artigos da série Springboot serviço integrado de redis (Alface e Jedis)

  • Configure as informações de conexão do Redis em application.properties
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=192.168.200.129
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=root
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-idle=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-active=5
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=1
# 连接超时时间(毫秒)
spring.redis.timeout=5000

Testar objetos de armazenamento redis

Resultado de impressão: Pessoas (nome = ww, endereço = ee) ---------------------- {nome = jack, classe = 1, idade = 27}

//  redisTemplate.setKeySerializer(new StringRedisSerializer());  设置key的编码
        //方式一:
        redisTemplate.opsForValue().set("p", new People("ww", "ee"));
        People p = (People) redisTemplate.opsForValue().get("p");
        //方式二:
        Map<String, Object> testMap = new HashMap();
        testMap.put("name", "jack");
        testMap.put("age", 27);
        testMap.put("class", "1");
        redisTemplate.opsForHash().putAll("hash1", testMap);
        //
        System.out.println(p + "----------------------" + redisTemplate.opsForHash().entries("hash1"));

Sobre o cluster redis:

Tutorial de cluster Redis

Acho que você gosta

Origin blog.csdn.net/xiangwang2016/article/details/105893307
Recomendado
Clasificación