Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

王林
王林ke hadapan
2023-05-27 11:34:061814semak imbas

Kod bersiri Redis berantakan di bawah SpringBoot

Penyelesaian bersiri asal projek menggunakan kelas bersiri JDK, tetapi menyimpannya ke redis akan menghasilkan kod berantakan dan menyusahkan untuk dilihat dan diurus.

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
        redisTemplate.setKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
        redisTemplate.setHashKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
        redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
        this.redisTemplate = redisTemplate;
    }

Selepas menyemak di Internet, ia disebabkan oleh masalah kelas bersiri Kami tidak menggunakan kaedah bersiri jdk dan menggunakan format json

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        this.redisTemplate = redisTemplate;
    }

Beri perhatian kepada masalah itu

Gunakan penyeri bersiri di atas Adalah perlu untuk memastikan semua kaedah get dalam kelas entiti mempunyai medan atribut, jika tidak, masalah akan berlaku apabila menyahsiri perbualan Jika tidak perlu menambah anotasi @JsonIgnore, ia akan diabaikan semasa bersiri .

SpringBoot mengkonfigurasi peraturan siri Redis untuk mengelakkan aksara yang bercelaru

SpringBoot memperkenalkan Redis dengan sangat mudah, tambahkan anotasi berikut:

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Kemudian dalam aplikasi . Tambah konfigurasi Redis dalam yml:

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Nota: Terdapat beberapa konfigurasi tambahan di sini, seperti kata laluan, dsb., yang saya tidak akan tulis di sini untuk menyelamatkan masalah.

Kini kami boleh menulis kelas ujian

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Selepas ujian, kami menemui masalah, kunci seperti ujian:1 telah bercelaru. Sebagai contoh, apabila saya menggunakan alat

Another.Redis.Desktop.Manager untuk melihatnya, saya mendapati ia bertukar menjadi satu siri rentetan pelik.

Kod bercelaru.

Ini disebabkan oleh peraturan siri lalai Redis. Semua peraturan siri lalai RedisTemplate ialah JDKSerializer, dan peraturan siri lalai StringRedisTemplate ialah StringRedisSerializer.

Anda boleh lihat gambar di bawah untuk butiran

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Bagaimana untuk menyelesaikan kod bersiri Redis di bawah SpringBoot

Kami perlu mengkonfigurasinya

rreee

Nota: Hanya peraturan siri Kunci dan Nilai ditetapkan semula di sini Peraturan siri kunci cincang dan nilai cincang boleh ditetapkan melalui rujukan.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan kod bersiri Redis di bawah 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