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

So verwenden Sie Redis in Springboot richtig

PHPz
Freigeben: 2023-05-29 15:07:06
nach vorne
723 Leute haben es durchsucht

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;
    }
}
Nach dem Login kopieren

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
  }
]
Nach dem Login kopieren

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");
    }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage