Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan redis dengan betul dalam springboot

Cara menggunakan redis dengan betul dalam springboot

PHPz
PHPzke hadapan
2023-05-29 15:07:06674semak imbas

Redis melaksanakan caching data Dalam projek, beberapa data kamus, data sesi dan data sementara akan disimpan dalam redis juga menyokong redis , dan melaksanakan satu utas bagi setiap utas terlalu membazir sumber Adalah sangat berbahaya jika tidak dapat mengawal bilangan utas, jadi beberapa komponen kumpulan benang redis telah muncul.

Kumpulan benang Jedis terutamanya bermakna setiap contoh mempunyai utasnya sendiri, dan utas boleh diperoleh daripada kumpulan yang dibuatnya
lettuce salad ialah alat kumpulan benang yang dilancarkan oleh Apache oleh berbilang akses perkongsian Thread meningkatkan penggunaan sumber

konfigurasi siri redis

Secara umumnya, redis-key menggunakan siri redis-value menggunakan siri json, dan saiz json Kecil, sangat mudah dibaca; dan tidak perlu melaksanakan antara muka bersiri.

/**
 * 对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;
    }
}

Dalam kod di atas, rentetan json yang dijana oleh om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL) mempunyai jenis, supaya ia boleh disimpulkan secara langsung melalui jenis apabila deserialisasi.

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

Lihat pada kod yang ditambah dan dibaca

 @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");
    }

Nota: Untuk Token kelas entiti ia sepatutnya mempunyai pembina tanpa hujah, yang diperlukan untuk penyahserikatan.

Atas ialah kandungan terperinci Cara menggunakan redis dengan betul dalam springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam