Rumah >pangkalan data >Redis >Bagaimana untuk menyelesaikan kod bersiri Redis 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; }
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 memperkenalkan Redis dengan sangat mudah, tambahkan anotasi berikut:
Kemudian dalam aplikasi . Tambah konfigurasi Redis dalam yml:
Nota: Terdapat beberapa konfigurasi tambahan di sini, seperti kata laluan, dsb., yang saya tidak akan tulis di sini untuk menyelamatkan masalah.
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.
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!