Rumah  >  Artikel  >  Java  >  Spring Boot menyepadukan Redis untuk melaksanakan caching dan pengurusan sesi

Spring Boot menyepadukan Redis untuk melaksanakan caching dan pengurusan sesi

WBOY
WBOYasal
2023-06-23 08:33:06907semak imbas

Dengan perkembangan pesat teknologi Internet dan peningkatan permintaan untuk aplikasi, isu keselarasan tinggi dan pemprosesan data telah menjadi cabaran yang mesti dihadapi oleh setiap pembangun. Dalam konteks ini, caching dan pengurusan sesi telah menjadi kunci untuk meningkatkan prestasi sistem dan kelajuan tindak balas. Redis ialah storan data dalam memori sumber terbuka yang digunakan secara meluas dalam cache, pengurusan sesi, baris gilir dan medan lain. Artikel ini akan memperkenalkan cara mengintegrasikan Redis melalui Spring Boot untuk melaksanakan pengurusan cache dan sesi, membantu pembaca memahami dan menggunakan teknologi Redis dengan lebih baik.

1. Pengenalan kepada Redis

Redis (Pelayan Kamus Jauh) ialah pelayan struktur data berasaskan memori yang boleh digunakan sebagai cache, pangkalan data, perisian tengah mesej dan aspek lain. Redis menyokong berbilang jenis struktur data, termasuk rentetan, cincangan, senarai, set, set tersusun, dsb., dan menyediakan antara muka API yang kaya untuk menyokong penggunaan teragih, replikasi tuan-hamba dan ciri lain. Dari segi caching, Redis boleh menyediakan perkhidmatan membaca data berkelajuan tinggi dan sangat tersedia, meningkatkan prestasi sistem dan kelajuan tindak balas.

2. Spring Boot menyepadukan Redis

Spring Boot ialah rangka kerja untuk membina aplikasi dengan cepat, yang boleh membantu kami membina aplikasi web, API REST, perkhidmatan mikro dan jenis aplikasi lain dengan cepat. Spring Boot menyediakan mekanisme pemalam dan sambungan yang kaya yang boleh mengintegrasikan pelbagai komponen dan alatan pihak ketiga dengan mudah. Dari segi mengintegrasikan Redis, Spring Boot menyediakan dua kaedah pelaksanaan, Spring Data Redis dan Lettuce, yang boleh dipilih dan dikonfigurasikan mengikut keperluan anda sendiri.

  1. Gunakan Spring Data Redis untuk menyepadukan Redis

Spring Data Redis ialah modul lanjutan Spring Data yang boleh menyokong akses dan operasi data berasaskan Redis. Spring Data Redis menyediakan model pengaturcaraan yang ringkas, konsisten dan mudah digunakan yang boleh membantu kami mengakses dan mengendalikan Redis dengan cepat. Berikut ialah kod contoh untuk menyepadukan Redis menggunakan Spring Data Redis:

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

Dalam contoh di atas, kami mendayakan sokongan cache Spring melalui anotasi @Configuration dan @EnableCaching, dan mencipta contoh RedisTemplate melalui @Bean anotasi. RedisTemplate ialah kelas teras yang disediakan oleh Spring Redis untuk mengakses Redis Ia boleh menetapkan sifat seperti kilang sambungan dan penyeri bersiri.

  1. Gunakan Lettuce untuk menyepadukan Redis

Lettuce ialah klien berprestasi tinggi untuk Redis yang menyokong operasi tak segerak dan segerak, menyediakan lebih banyak pilihan berfungsi dan Skalabilitas yang lebih baik. Matlamat reka bentuk Lettuce adalah untuk menyediakan penyelesaian akses Redis berprestasi tinggi, ketersediaan tinggi dan mudah digunakan. Berikut ialah contoh kod untuk menyepadukan Redis menggunakan Lettuce:

@Configuration
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private int database;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setDatabase(database);
        redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        lettuceConnectionFactory.afterPropertiesSet();
        return lettuceConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

Dalam contoh di atas, kami menentukan kelas RedisConfig melalui anotasi @Configuration dan menyahkod alamat hos dan nombor port Redis dalam fail konfigurasi melalui anotasi @Value , kata laluan dan nombor pangkalan data dan maklumat lain. Kemudian kami mencipta instance RedisConnectionFactory melalui anotasi @Bean dan menetapkan maklumat sambungan Redis dan maklumat pengesahan melalui RedisStandaloneConfiguration. Akhir sekali, contoh RedisConnectionFactory disuntik semasa mencipta RedisTemplate.

3. Aplikasi Redis dalam cache dan pengurusan sesi

Selepas menyepadukan Redis melalui Spring Boot, kami boleh menggunakan Redis dalam cache dan senario pengurusan sesi untuk meningkatkan lagi prestasi dan prestasi sistem. Ketersediaan.

  1. Aplikasi Redis dalam Caching

Dalam aplikasi web, data caching boleh membantu kami meningkatkan prestasi sistem dan kelajuan tindak balas, serta mengurangkan tekanan pangkalan data dan masa tindak balas. Sebagai storan data memori berkelajuan tinggi, Redis sangat sesuai digunakan sebagai storan cache. Melalui senario perniagaan tertentu dalam sistem, kami boleh menyimpan data yang perlu dicache dalam Redis dan menetapkan masa tamat tempoh cache untuk mencapai pengalaman dan prestasi data yang optimum.

@Service
public class UserService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Autowired
    UserDao userDao;

    @Cacheable(value = "user", key = "#id", unless="#result == null")
    public User getUserById(String id) {
        User user = (User) redisTemplate.opsForValue().get(id);
        if(null == user){
            user = userDao.getUserById(id);
            redisTemplate.opsForValue().set(id, user, 30, TimeUnit.MINUTES);
        }
        return user;
    }

    @CachePut(value = "user", key = "#user.id")
    public User updateUser(User user){
        userDao.updateUser(user);
        return user;
    }

    @CacheEvict(value = "user", key = "#id")
    public void deleteUser(String id){
        userDao.deleteUser(id);
    }
}

Dalam contoh di atas, kami menentukan kelas UserService, menyuntik contoh RedisTemplate melalui @Autowired dan menggunakan anotasi @Cacheable, @CachePut, @CacheEvict untuk menyediakan bacaan, pengemaskinian, pemadaman data cache, dan lain-lain beroperasi. Dalam operasi dapatkan, jika data yang diperlukan tidak wujud dalam Redis, ia akan disoal dari pangkalan data dan hasil pertanyaan akan disimpan dalam Redis dengan masa tamat tempoh selama 30 minit.

  1. Aplikasi Redis dalam pengurusan sesi

Pengurusan sesi ialah bahagian penting dalam aplikasi web dan amat penting untuk melindungi maklumat pengguna dan menyediakan pengalaman berkualiti tinggi. Redis boleh membantu kami melaksanakan pengurusan sesi teragih dan menyimpan data sesi dalam Redis untuk meningkatkan ketersediaan dan keselamatan sistem.

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1200)
public class SessionConfig {

    @Bean
    public LettuceConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory();
    }

    @Bean
    public HttpSessionIdResolver httpSessionIdResolver() {
        return HeaderHttpSessionIdResolver.xAuthToken();
    }
}

Dalam contoh di atas, kami menentukan kelas SessionConfig, mendayakan sokongan Spring Session melalui anotasi @EnableRedisHttpSession dan mencipta instance LettuceConnectionFactory melalui anotasi @Bean. Dalam kaedah @Bean, kami boleh mengkonfigurasi dan memulakan kilang sambungan Redis untuk memenuhi keperluan kami sendiri. Apabila mencipta HttpSession, Spring Session akan menyimpan data sesi dalam Redis dan bukannya memori setempat untuk mengelakkan kehilangan sesi dan degradasi ketersediaan.

4

Redis ialah sistem storan, cache dan data berprestasi tinggi yang digunakan secara meluas dalam berbilang senario aplikasi. Melalui penyepaduan Spring Boot, kami boleh menggunakan Redis dengan mudah pada caching dan pengurusan sesi untuk meningkatkan prestasi dan ketersediaan aplikasi web. Artikel ini secara ringkas memperkenalkan dua cara untuk Spring Boot mengintegrasikan Redis dan aplikasi Redis dalam caching dan pengurusan sesi. Saya harap ia akan membantu pembaca.

Atas ialah kandungan terperinci Spring Boot menyepadukan Redis untuk melaksanakan caching dan pengurusan sesi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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