Rumah > pangkalan data > Redis > teks badan

Bagaimana untuk menyelesaikan objek bercelaru yang disimpan dalam redis bersepadu springboot

王林
Lepaskan: 2023-05-28 09:25:05
ke hadapan
1665 orang telah melayarinya

Springboot menyepadukan redis untuk menyimpan kod kacau objek

Sebenarnya, ia bukan sejenis kod kacau pada dasarnya, ia hanyalah sesuatu yang disimpan selepas bersiri Apabila kita menggunakan RedisTemplete untuk menyimpan objek, jika objek itu belum bersiri, Ralat akan dilaporkan, dan data yang diperoleh selepas bersiri bukanlah data yang anda mahukan Untuk menyelesaikan kaedah ini, kami boleh menggunakan StringRedisTemplete

Tidak banyak yang perlu diperkatakan tentang kod

Apabila menggunakan redistemplete secara lalai

/**
 * title: list
 *
 *  当我们保存到redis中的是一个对象时,我们会发现会报错,提示我们需要序列化 ,
 *  当我们继承了序列化接口之后,查看设置的值时,我们发现设置的值不是原来的样字,
 *  此时我们可以通过两种方式解决
 *      1.
 *
 * @author : ZHeng
 */
@SpringBootTest
public class RedisListTest01 {

//    @Autowired
//    StringRedisTemplate stringRedisTemplate;

    @Autowired
    RedisTemplate redisTemplate;

    @Test
    public void test(){
        redisTemplate.opsForValue().set("user1",new User(2,"lisi",19));
        System.out.println(redisTemplate.opsForValue().get("user1"));
    }
}
Salin selepas log masuk

Apabila kami menjalankannya, kami akan mendapati ralat! Minta kami bahawa objek Pengguna tidak bersiri.

org.springframework.data.redis.serializer.SerializationException: Tidak boleh bersiri; pengecualian bersarang ialah org.springframework.core.serializer.support.SerializationFailedException: Gagal menyerikan objek menggunakan DefaultSerializer pengecualian ialah java; .lang.IllegalArgumentException: DefaultSerializer memerlukan muatan Serializable tetapi menerima objek jenis [com.xxx.redis01.model.User]

.....

Disebabkan oleh: java.lang.IllegalArgumentException: DefaultSerializer memerlukan muatan Serializable tetapi menerima objek jenis [com.xxx.redis01.model.User]
di org.springframework.core.serializer.DefaultSerializer.serialize(DefaultSerializer.java:43)
di org. springframework.core.serializer.Serializer.serializeToByteArray(Serializer.java:56)
di org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:60)
... 72 lagi

Proses selesai dengan kod keluar -1

Apabila kita mensirikan objek Pengguna dan menjalankannya

public class User implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    //省略getter setter toString等
}
Salin selepas log masuk

Ya tuhan, ia tidak kacau lagi!!! , tetapi apabila anda menggunakan linux untuk menyambung dari jauh dan menyemak kekunci, anda akan mendapati, ya? Ia bercelaru di sini. . .

2022-04-01 20:32:07.666 INFO 18640 --- [ utama] com.xxx.redis01.RedisListTest01 : Tiada profil aktif ditetapkan, kembali kepada 1 profil lalai: "lalai"

2022-04-01 20:32:07.998 INFO 18640 --- [ utama] .s.d.r.c.RepositoryConfigurationDelegate: Berbilang modul Spring Data ditemui, memasuki mod konfigurasi repositori yang ketat!
2022-04-02:01 2022-04-02:01 INFO 18640 --- [ utama] .s.d.r.c.RepositoryConfigurationDelegate: Bootstrap Spring Data Redis repositori dalam mod DEFAULT.
2022-04-01 20:32:08.018 INFO 18640 --- [utama] .s.d.Repository Data Spring.s.d. pengimbasan repositori dalam 5 ms. Menemui 0 antara muka repositori Redis.
2022-04-01 20:32:08.752 INFO 18640 --- [ utama] com.xxx.redis01.RedisListTest01 : Mulakan RedisListTest481 dalam masa 1.JVM 2.517 )
Pengguna{id=2, name='lisi', age='19'}

Proses selesai dengan kod keluar 0

Apa kejadahnya ini? Jelas sekali pengguna1. Apakah ini? >Berjaya mendapatkan Pergi ke

127.0.0.1:6379> keys *
¬쳵ser1
Salin selepas log masuk

dan mari kita lihat di bawah Linux Ia juga ok

@SpringBootTest
public class RedisListTest01 {

    @Autowired
    StringRedisTemplate stringRedisTemplate;

    @Test
    public void test(){
        stringRedisTemplate.opsForValue().set("user1",new User(2,"lisi",19).toString());
        System.out.println(stringRedisTemplate.opsForValue().get("user1"));
    }
}
Salin selepas log masuk

Sudah tentu ada cara lain untuk menyimpannya dalam format JSON, jadi saya tidak akan meletakkannya. kod di sini.

Selesaikan masalah kacau redis

Hanya tambah kelas konfigurasi secara langsung

User{id=2, name='lisi', age='19'}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan objek bercelaru yang disimpan dalam redis bersepadu springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!