ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring Boot整合Redis [打印本页]

作者: 王海鱼    时间: 2024-6-22 05:28
标题: Spring Boot整合Redis
Spring Boot整合Redis

        Spring Boot 整合 Redis 是一种常见的做法,用于在 Spring Boot 应用程序中添加缓存、会话管理分布式锁等功能。
浅谈Redis

        Redis用于存储数据,且在内存当中举行存储。
        但是在日常编写代码时,定义一个变量也就是属于在内存当中存储一个数据。
        Redis主要会在分布式体系当中发挥重要作用,如果是单机体系,直接通过变量存储数据的方式会比使用Redis更优。
为什么会使用Redis?

        主要原因是:当今的体系一样平常是分布式体系,存在多个进程,而进程是具有隔离性的。
        我们如果要在进程之间通信,就需要通过网络的方式。
   以是,Redis是基于网络的,可以把自己的内存中的变量给别的进程,乃至别的主机的进程进利用用。
  与MySQL对比

        MySQL存在一个最大的题目:访问数据的速率很慢。MySQL的数据存在于硬盘当中。
        许多互联网产物对于性能的要求极高。
        以是Redis也可以作为数据库进利用用。
   Redis固然快,但是存储空间小。
  是否能让Redis和MySQL的长处相联合?

        把常使用数据存放在Redis当中,将不常用的数据存储在MySQL当中。
        固然代价是有的,就是体系的复杂度提升。
        数据发生修改,还存在Redis和MySQL的数据同步题目。
浅谈Redis博客在右侧链接:浅谈Redis和分布式体系-CSDN博客
Spring Boot整合 Redis

Redis客户端

        Jedis和Lettuce是两个流行的Java Redis客户端库,它们都提供了对Redis数据库的访问和操作。下面是对这两个库的简要介绍:
Jedis

Lettuce

选择Jedis还是Lettuce?

        选择哪个库取决于您的具体需求和偏好:
        如果您需要一个简单、直观的客户端,而且不介意使用阻塞I/O模子,Jedis大概是一个不错的选择。
        如果您正在构建一个高性能的应用程序,需要利用非阻塞I/O和异步编程的优势,大概需要原生支持Redis集群和哨兵,Lettuce大概是更好的选择。
RedisTemplate基本介绍

        RedisTemplate 提供了对 Redis 各种数据范例(如字符串、列表、集合、散列、有序集合等)的基本操作。
RedisTemplate支持自定义序列化机制,允许你定义怎样序列化和反序列化存储在 Redis 中的对象。Spring Data Redis 默认使用 Java 的序列化机制,但你可以根据需要配置为 JSON 序列化、进制序列化等。
RedisTemplate和StringRedisTemplate的区别


总结:


6.2.4 RedisTemplate序列化和反序列化机制

什么是序列化


对象的序列化主要有两种用途


Redis为什么要序列化


自定义序列化

  1. @Configuration
  2. public class RedisTemplateConfiguration {
  3.     @Bean
  4.     public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
  5.         RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
  6.         redisTemplate.setConnectionFactory(redisConnectionFactory);
  7.         // 使用GenericJackson2JsonRedisSerializer 替换默认序列化
  8.         GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
  9.         // 设置key和value的序列化规则
  10.         redisTemplate.setKeySerializer(new StringRedisSerializer());
  11.         redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
  12.         // 设置hashKey和hashValue的序列化规则
  13.         redisTemplate.setHashKeySerializer(new StringRedisSerializer());
  14.         redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
  15.         redisTemplate.afterPropertiesSet();
  16.         return redisTemplate;
  17.     }
  18. }
复制代码
Redis实践

还是那个业务,这次将使用Spring Boot框架和Redis缓存来管理用户的信息。
   整个应用程序的业务逻辑是围绕用户信息的增(add)和查(get)操作展开的。使用Redis作为缓存层可以提高应用程序的性能,尤其是在读操作比写操作频繁的场景中。当用户信息被哀求时,应用程序首先检查Redis缓存,如果缓存中存在,则直接返回缓存的数据,否则从数据库中获取并缓存到Redis中。当新用户被添加时,用户信息被保存到数据库,并立即缓存到Redis中,以便后续的快速访问。
  用户控制器(UserController 类)
   REST控制器,所有的哀求基础路径为“/users”
  
  1. @RestController
  2. @RequestMapping("/users")
  3. public class UserController {
  4.     @Autowired
  5.     private UserService userService;
  6.     @GetMapping("/{id}")
  7.     public User getUserById(@PathVariable String id) {
  8.         return userService.getUserById(id);
  9.     }
  10.     @PostMapping("/")
  11.     public User addUser(@RequestBody User user) {
  12.         return userService.addUser(user);
  13.     }
  14. }
复制代码
Redis ttl与key过期计谋

略,具体请访问右侧博客地址:Redis ttl与key过期计谋-CSDN博客
有关Redis其他内容,均放置于右侧博客专栏中:Redis的学习_写bug的小屁孩的博客-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4