Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Redis in Springboot richtig

So verwenden Sie Redis in Springboot richtig

PHPz
PHPznach vorne
2023-05-29 15:07:06676Durchsuche

redis implementiert Daten-Caching. Im Allgemeinen werden einige Wörterbuchdaten, Sitzungsdaten und temporäre Daten in Redis gespeichert Thread-Sicherheit, und jede Implementierung eines Threads verschwendet zu viele Ressourcen. Es ist sehr gefährlich, die Anzahl der Threads nicht kontrollieren zu können. Daher sind einige Redis-Thread-Pool-Komponenten erschienen.

jedis Thread-Pool bedeutet hauptsächlich, dass jede Instanz über einen eigenen Thread verfügt und der Thread aus dem von ihr eingerichteten Pool abgerufen werden kann
Salat Salat ist ein von Apache und seinen Redis gestartetes Thread-Pool-Tool Der gemeinsame Zugriff durch mehrere Threads verbessert die Ressourcennutzung Größe und gut lesbar und erfordert keine Implementierung der Serializer-Schnittstelle.

/**
 * 对redis的配置.
 */
@Configuration
public class RedisConfig {

    @Autowired
    private RedisConnectionFactory redisConnectionFactory;

    /**
     * redis重写RedisTemplate.
     */
    @Bean
    public RedisTemplate redisTemplate() {
        RedisTemplate redisTemplate = new RedisTemplate();
        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //序列化时允许非常量字段均输出类型,即redis序列化后带有类型
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // redis key的序列化
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);

        // redis value的序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }
}

Im obigen Code hat die von om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL) generierte JSON-Zeichenfolge einen Typ, sodass beim Deserialisieren direkt über den Typ abgeleitet werden kann.

[
  "com.lind.basic.entity.Token",
  {
    "credentials": "ok",
    "region": "hello",
    "bucket": null
  }
]

Sehen Sie sich den hinzugefügten und gelesenen Code an.

 @GetMapping("set")
    public String set() throws JsonProcessingException {
        Token token = Token.builder()
                .credentials("ok")
                .region("hello")
                .build();
        redisTemplate.opsForValue().set("test:user", token);//redisTemplate帮我们序列化
        redisTemplate.opsForHash().put("author", "zzl", token);
        return "OK";
    }

    @GetMapping("get")
    public Token get() throws IOException {
        return (Token) redisTemplate.opsForValue().get("test:user");
    }

Hinweis: Für die Entitätsklasse Token sollte es einen Konstruktor ohne Argumente geben, der für die Deserialisierung benötigt wird.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Redis in Springboot richtig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen