Bagaimana but musim bunga menyepadukan redisson
Integrasi dan Nota
Redisson menyokong persekitaran redis, berdiri sendiri, kelompok, sentinel, awan, dll.
Di sini kita akan bercakap tentang Mod kluster Apa yang perlu diberi perhatian, redisson akan mengesan sama ada nod induk/hamba adalah normal apabila ia dimulakan secara umumnya, tiada masalah dengan 3 serpihan, 3 tuan dan 3 hamba Walau bagaimanapun, jika persekitaran ujian mempunyai 1 serpihan, 1 tuan, 1 hamba, atau 3 tuan, ia tidak boleh dimulakan.
Selain persekitaran, anda juga perlu memberi perhatian kepada keserasian dengan atau tanpa kata laluan.
Secara manual menyuntik konfigurasi redisson
Secara amnya, persekitaran pengeluaran adalah dengan kata laluan. Jika terdapat kata laluan, adalah disyorkan untuk menyuntik konfigurasi redisson secara manual tanpa menggunakan but spring untuk membantu anda menyepadukannya, kerana but spring mungkin tidak dapat mengecam kata laluan.
@Configuration public class RedissonConfiguration { @Value("${spring.redis.cluster.nodes}") private String node; @Value("${spring.redis.password:}") private String password; @Bean public RedissonClient redissonClient() { Config config = new Config(); String[] nodes = node.split(","); ClusterServersConfig clusterServersConfig = config.useClusterServers(); for (String nodeAddress : nodes) { clusterServersConfig.addNodeAddress(prefixAddress(nodeAddress)); } if (StringUtils.isNotBlank(password)) { clusterServersConfig.setPassword(password); } return Redisson.create(config); } private String prefixAddress(String address) { if (!StringUtils.isBlank(address) && !address.startsWith("redis")) { return "redis://" + address; } return address; } }
Anda boleh melaraskan beberapa konfigurasi berdasarkan situasi sebenar anda.
Sudah tentu, sebagai tambahan kepada kata laluan, terdapat satu lagi perkara yang perlu diberi perhatian Sama ada terdapat SSL ialah Amazon Cloud be SSL
but spring serasi dengan redis Anda boleh Tianji dalam konfigurasi yaml: Ssl: true, tetapi untuk redisson, cuma tambah awalan:
rediss:// + ip: port atau. nama domain
Konfigurasi yaml khusus
spring: redis: cluster: nodes: rediss://clustercfg.xxx password: 'xxx' timeout: 30000 Ssl: true lettuce: pool: max-idle: 100
Menggunakan strategi pengecualian bersama kunci, tiada masalah dengan
@Scheduled(cron = "${xxx:0 0 */2 * * ?}") public void createProcess() { RLock lock = redisson.getLock(key); try { if (lock.tryLock()) { // 执行运行程序 } else { log.info("createProcess 获取锁失败"); } } catch (Exception e) { log.error("xxx", e); } finally { // 是否有锁 && 是否当前线程 if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) { lock.unlock(); } } }
pada pandangan pertama, tetapi pembinaan semula ini mempunyai banyak tugas berjadual, jadi ia akan melibatkan Banyak cubaan tangkapan dengan kod yang sama.
Kaedah anotasi
Salah satu cara untuk menyelesaikan kod pendua ialah enkapsulasi, iaitu aspek anotasi Saya rasa kaedah anotasi lebih fleksibel
Jadi
/** * Redisson 同步锁 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface RedissonSyncLock { String pref(); /** * 锁后缀,一般前缀根据业务来定,后缀是具体的场景 */ String keyEL(); /** * 等待时长 【需要区分是互斥还是阻塞,互斥默认0就可以】 */ int waitSec() default 0; }
perlukan sekeping
@Slf4j @Aspect @Component @RequiredArgsConstructor public class RedissonSyncLockAspect { private final Redisson redisson; @Around(value = "@annotation(xxx.RedissonSyncLock)") public Object around(ProceedingJoinPoint joinPoint) throws Throwable { MethodSignature signature = (MethodSignature) joinPoint.getSignature(); RedissonSyncLock redissonSyncLock = signature.getMethod().getAnnotation(RedissonSyncLock.class); Object[] args = joinPoint.getArgs(); String key = SpelUtil.parseSpel(signature.getMethod(), args, redissonSyncLock.keyEL()); RLock lock = null; try { if (StringUtils.isNotBlank(key) && !StringUtils.equals(key, "null") lock = redisson.getLock(redissonSyncLock.pref().concat(key)); if (lock.tryLock(redissonSyncLock.waitSec(), TimeUnit.SECONDS)) { return joinPoint.proceed(); } } log.info("RedissonSyncLockAspect 上锁失败 {}", key); } finally { if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) { lock.unlock(); } } } }
Cara guna:
@RedissonSyncLock(pref = KeyConstant.xxx, keyEL = "#bean.accountNo") private void xxx(Bean bean){ // 程序执行 }
memang lebih senang digunakan.
Atas ialah kandungan terperinci Bagaimana but musim bunga menyepadukan redisson. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pengenalan kepada Jasypt Jasypt ialah perpustakaan java yang membenarkan pembangun menambah fungsi penyulitan asas pada projeknya dengan usaha yang minimum dan tidak memerlukan pemahaman yang mendalam tentang cara penyulitan berfungsi dengan tinggi untuk penyulitan sehala dan dua hala. teknologi penyulitan berasaskan piawai. Sulitkan kata laluan, teks, nombor, perduaan... Sesuai untuk penyepaduan ke dalam aplikasi berasaskan Spring, API terbuka, untuk digunakan dengan mana-mana pembekal JCE... Tambahkan kebergantungan berikut: com.github.ulisesbocchiojasypt-spring-boot-starter2 Faedah Jasypt melindungi keselamatan sistem kami Walaupun kod itu bocor, sumber data boleh dijamin.

Senario penggunaan 1. Tempahan berjaya dibuat tetapi pembayaran tidak dibuat dalam masa 30 minit. Pembayaran tamat masa dan pesanan dibatalkan secara automatik 2. Pesanan telah ditandatangani dan tiada penilaian dilakukan selama 7 hari selepas ditandatangani. Jika pesanan tamat dan tidak dinilai, sistem lalai kepada penilaian positif 3. Pesanan dibuat dengan jayanya jika peniaga tidak menerima pesanan selama 5 minit, pesanan itu dibatalkan peringatan mesej teks dihantar... Untuk senario dengan kelewatan yang lama dan prestasi masa nyata yang rendah, kami boleh Gunakan penjadualan tugas untuk melaksanakan pemprosesan undian biasa. Contohnya: xxl-job Hari ini kita akan memilih

1. Redis melaksanakan prinsip kunci teragih dan mengapa kunci teragih diperlukan Sebelum bercakap tentang kunci teragih, adalah perlu untuk menjelaskan mengapa kunci teragih diperlukan. Lawan daripada kunci yang diedarkan ialah kunci yang berdiri sendiri Apabila kami menulis program berbilang benang, kami mengelakkan masalah data yang disebabkan oleh mengendalikan pembolehubah yang dikongsi pada masa yang sama Kami biasanya menggunakan kunci untuk mengecualikan pembolehubah yang dikongsi bersama untuk memastikan ketepatannya pembolehubah yang dikongsi skop penggunaannya adalah dalam proses yang sama. Jika terdapat berbilang proses yang perlu mengendalikan sumber yang dikongsi pada masa yang sama, bagaimanakah ia boleh saling eksklusif? Aplikasi perniagaan hari ini biasanya merupakan seni bina perkhidmatan mikro, yang juga bermakna bahawa satu aplikasi akan menggunakan berbilang proses Jika berbilang proses perlu mengubah suai baris rekod yang sama dalam MySQL, untuk mengelakkan data kotor yang disebabkan oleh operasi yang tidak teratur, keperluan pengedaran. untuk diperkenalkan pada masa ini. Gaya dikunci. Ingin mencapai mata

Springboot membaca fail, tetapi tidak boleh mengakses perkembangan terkini selepas membungkusnya ke dalam pakej balang Terdapat situasi di mana springboot tidak boleh membaca fail selepas membungkusnya ke dalam pakej balang adalah tidak sah dan hanya boleh diakses melalui strim. Fail berada di bawah resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Apabila Springboot+Mybatis-plus tidak menggunakan pernyataan SQL untuk melaksanakan operasi penambahan berbilang jadual, masalah yang saya hadapi akan terurai dengan mensimulasikan pemikiran dalam persekitaran ujian: Cipta objek BrandDTO dengan parameter untuk mensimulasikan parameter yang dihantar ke latar belakang bahawa adalah amat sukar untuk melaksanakan operasi berbilang jadual dalam Mybatis-plus Jika anda tidak menggunakan alatan seperti Mybatis-plus-join, anda hanya boleh mengkonfigurasi fail Mapper.xml yang sepadan dan mengkonfigurasi ResultMap yang berbau dan kemudian. tulis pernyataan sql yang sepadan Walaupun kaedah ini kelihatan menyusahkan, ia sangat fleksibel dan membolehkan kita

1. Sesuaikan RedisTemplate1.1, mekanisme siri lalai RedisAPI Pelaksanaan cache Redis berasaskan API menggunakan templat RedisTemplate untuk operasi cache data Di sini, buka kelas RedisTemplate dan lihat maklumat kod sumber kelas tersebut. Isytihar kunci, Pelbagai kaedah pesirilan nilai, nilai awal kosong @NullableprivateRedisSe

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Jika anda pernah menggunakan Redis sebelum ini, anda akan mendapat hasil dua kali ganda dengan separuh usaha dengan menggunakan Redisson menyediakan cara yang paling mudah dan mudah untuk menggunakan Redis. Tujuan Redisson adalah untuk mempromosikan pengasingan kebimbangan pengguna (Separation of Concern) daripada Redis, supaya pengguna boleh memberi lebih tumpuan kepada memproses logik perniagaan.
