Lalai ialah ConcurrentMapCache daripada ConcurrentMapCacheManager sebagai komponen cache.
Apabila menggunakan ConcurrentMap, data disimpan dalam ConcurrentMap<object></object>
.
Malah, semasa proses pembangunan, kami sering menggunakan beberapa perisian tengah caching.
Sebagai contoh, kami sering menggunakan redis, memcache, termasuk ehcache yang kami gunakan, dll. Kami semua menggunakan beberapa perisian tengah caching.
Apabila kami menerangkan prinsip sebelum ini, kami juga mendapati bahawa springboot menyokong banyak konfigurasi cache:
Seperti yang ditunjukkan dalam rajah di bawah:
Konfigurasi permulaan lalai ialah: SimpleCacheConfiguration.
Bilakah cache lain didayakan?
Kita boleh mencari kelas konfigurasi ini dengan ctrl+n, kemudian masuk dan melihat keadaan bersyaratnya:
Ini semua bermakna bahawa konfigurasi ini hanya akan berkuat kuasa apabila anda mengimport pakej yang sepadan.
Sekiranya ada pelajar yang tidak tahu teknologi redis, ada video penerangan siri redis yang dikeluarkan oleh cikgu Zhou Yang di Shang Silicon Valley. Atau anda boleh melawati laman web rasmi redis secepat mungkin untuk belajar redis.cn ialah laman web bahasa Cina untuk pembelajaran redis.
Cari imej redis
Ini disambungkan ke gudang asing, dan kelajuannya agak perlahan.
Kami mengesyorkan menggunakan buruh pelabuhan China.
docker pull registry.docker-cn.com/library/redis
docker run -d -p 6379:6379 --name myredis [REPOSITORY] docker ps
Untuk ujian, buka alat sambungan redis.
Kami Selepas pemula redis diperkenalkan, redisAutoConfiguration mula dimainkan.
RedisAutoConfiguration ini menambah dua komponen pada bekas:
Komponen yang ditambahkan pada bekas, satu One dipanggil RedisTemplate, dan yang lain dipanggil StringRedisTemplate, dua perkara.
Dua perkara ini digunakan untuk mengendalikan redis.
Ini adalah sama seperti jdbcTemplate yang digunakan oleh semua orang sebelum ini, digunakan untuk mengendalikan pangkalan data.
Ini adalah dua templat yang digunakan oleh spring untuk memudahkan operasi redis Jika anda ingin menggunakan kedua-dua perkara ini dalam program, hanya masukkannya secara automatik.
senarai operasi redis:
Semua perkara yang tidak dapat difahami ini Semuanya adalah hasil siri.
Pensiri lalai , iaitu JdkSerializationRedisSerializer digunakan.
Penyeri lalai ialah penyeri JDK yang digunakan.
Mari beralih kepada penyeri json dan itu sahaja.
Dalam kelas ujian, redisTemplate yang dikonfigurasikan kami sendiri disuntik secara automatik.
Kemudian kami menguji menyimpan objek itu semula.
Ini menunjukkan bahawa pengubahsuaian serializer kami berjaya.
Ini menjelaskan bahawa jika kita ingin menyimpan objek kemudian, kita sering perlu mengubah suai serializer.
Kami menggunakan pengurus cache ConCurrentMap sebelum ini.
Pengurus cache ini membantu kami membuat komponen cache.
Komponen cache sebenarnya menjalankan kerja CRUD dalam cache.
Sekarang kami telah memperkenalkan redis, apa yang akan berlaku?
Kami masih menetapkan debug=true dalam application.properties supaya laporan konfigurasi automatik boleh dihidupkan.
Pada masa ini, kami memulakan semula program kami dan mencari dalam konsol.
Lihat kelas konfigurasi automatik manakah yang berkuat kuasa?
Ternyata lalai yang didayakan ialah: SimpleCacheConfiguration.
Sekarang kami telah memperkenalkan pemula berkaitan redis, program ini akan mendayakan RedisCacheConfiguration secara lalai.
Hanya mulakan program dan uji terus.
Menunjukkan bahawa apabila membuat pertanyaan buat kali pertama, ia sedang menanyakan pangkalan data.
Apabila membuat pertanyaan untuk kali kedua, tiada output pada konsol, menunjukkan bahawa cache telah ditanya.
Cache hanya didayakan secara redis secara lalai.
Maka mesti dalam redis.
Kita boleh menyemaknya:
Ini menggambarkan masalah Apabila k dan v adalah kedua-dua objek, siri digunakan untuk menyimpan objek secara lalai. Untuk menyimpan. Kami mahu redis menyimpannya secara automatik sebagai json.
Apa yang perlu kita lakukan?
Mari kita analisis dahulu prinsip proses ini.
1. Kami telah memperkenalkan pemula redis, jadi pengurus cache kami telah menjadi pengurus semula pendiscache
2.
3. Reka bentuk semula ini dicipta untuk kami melalui konfigurasi semula. Mekanisme penyirian lalai yang digunakan oleh penyusunan semula ini ialah jdkserializationredisserializer
. Ini bersamaan dengan fakta bahawa redisCacheManager yang redis menghalang kami secara lalai tidak cukup memenuhi keperluan kami.
Apa yang perlu kita lakukan?
Kita harus menyesuaikan CacheManager.
Pada masa ini, kami memulakan semula projek untuk menguji Pada masa ini, kami dapat melihat hasilnya dalam redis, iaitu Kami mahukannya.
Semasa temuduga seterusnya, Yunqiu boleh bertanya kepada mereka yang ingin datang ke taman perisian, adakah anda tahu bahawa apabila redis starter menyimpan objek, redisTemplate Apakah peraturan bersiri lalai?
Jika kita ingin mengubah suai peraturan pensirilan lalai apabila menggunakan redis, apakah yang perlu kita lakukan?
Kami boleh memperibadikan redisCacheManager, kemudian menyesuaikan redisTemplate, dan menghantar penyeri berkaitan json dalam redisTemplate.
Kami meletakkan sekeping data dalam jadual jabatan dalam pangkalan data:
Kami menulis pemeta yang sepadan dengan operasi jabatan.
Mari kita tulis perkhidmatan yang sepadan
Kemudian mari kita lihat sama ada terdapat data dalam redis?
Kami telah melihat bahawa terdapat data berkaitan jabatan dalam redis.
Apabila kami membuat pertanyaan dept untuk kali kedua, kami harus menggunakan redis cache.
Tetapi apabila kami menyemak untuk kali kedua, ralat berikut berlaku.
Ralat yang dilaporkan di atas bermakna json tidak boleh dibaca.
Oleh kerana ia adalah perlu untuk menukar objek json jabatan kepada objek json pekerja, yang tidak mungkin.
Ini kerana redisCacheManager yang kami letakkan adalah untuk kakitangan operasi.
Jadi, kesan yang kita nampak sekarang sangat ajaib.
Data cache boleh disimpan dalam redis.
Tetapi apabila kami membuat pertanyaan daripada cache untuk kali kedua, kami tidak boleh membatalkannya semula.
Ternyata apa yang kami simpan ialah data json dept, dan pengurus cache kami menggunakan templat pekerja untuk mengendalikan redis secara lalai.
Perkara ini hanya boleh menyahsiri data pekerja.
Pada masa ini, terdapat dua redisCacheManagers yang manakah harus kami gunakan?
Kami boleh menentukannya dalam perkhidmatan.
Kemudian kami memulakan semula projek, dan hasilnya ialah ralat:
Jika , jika kami mempunyai berbilang Pengurus cache, kami mesti menggunakan Pengurus cache tertentu sebagai pengurus cache yang dikonfigurasikan lalai kami.
Sebagai contoh, kami boleh melakukan operasi berikut untuk membetulkan ralat permulaan:
Pada masa ini, mari kita lihat sama ada kita boleh menyahsiri dan membaca maklumat jabatan kita daripada redis secara normal dan berjaya apabila kita melaksanakan pertanyaan jabatan kedua?
Pada masa ini, kami mendapati bahawa sama ada pekerja atau jabatan, kami boleh berjaya menyahsiri dan menanyakannya daripada redis .
Ini sempurna.
Apa yang kami katakan sebelum ini semuanya menggunakan anotasi untuk meletakkan data dalam cache.
Namun, semasa pembangunan, kita sering menghadapi situasi sedemikian.
Iaitu, pada peringkat tertentu pembangunan kami, kami perlu meletakkan beberapa data ke dalam cache.
Kita perlu menggunakan pengekodan untuk mengendalikan cache.
Sebagai contoh, selepas kami menanyakan maklumat jabatan, kami ingin memasukkan maklumat ini ke dalam redis.
Kami boleh menyuntik Pengurus cache jabatan.
Kemudian semasa proses pengekodan, kita boleh mendapatkan cache dengan mengendalikan cacheManager ini,
Kemudian, kendalikan komponen cache untuk meningkatkan data Padam, ubah suai dan semak.
Kami menguji kod di atas dan memulakan projek, dan mendapati ia ok, dan data berjaya dimasukkan ke dalam redis:
Atas ialah kandungan terperinci Kaedah penyepaduan redis cache Springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!