• 第九章:(6)Spring Boot 与 缓存 之 整合 Redis


    一、使用 Docker 快速安装 Redis

      1、安装 redis,使用 docker 方式

        使用 Docker 中国,镜像中国 加速下载 https://www.bbsmax.com/A/amd083yqdg/

      2、命令安装

    获取 Redis 镜像
    docker pull registry.docker-cn.com/library/redis
    
    启动 Redis 容器,并设置端口映射
    docker run -d -p 6379:6379 --name myredis imgId
    
    查看运行的 Docker 容器
    docker ps
    

      

    二、引入 redis 的 starter

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    三、配置 Redis 

      在 SpringBoot 的配置文件中配置 Redis 信息

    #redis 的配置信息
    spring.redis.host=192.168.8.119
    

      

    四、RedisAutoConfiguration

      当在项目中导入 redis 的相关依赖时,RedisAutoConfiguration 就会生效。

      RedisAutoConfiguration 会给我们导入两个用于操作 Redis 的类:

      

       其中:

        StringRedisTemplate stringRedisTemplate;  //操作k-v都是字符串的
    
        RedisTemplate redisTemplate;  //k-v 都是对象的
    

      

    五、使用 RedisTemplate 操作 Redis

      1、操作常用数据结构

        Redis 常见的五大数据类型

    String 字符串     redisTemplate.opsForValue(); //操作字符串
    list   列表       redisTemplate.opsForList();  //操作list
    Set    集合       redisTemplate.opsForSet();   //操作set
    Hash   散列       redisTemplate.opsForHash();  //操作hash
    ZSet   有序集合   redisTemplate.opsForZSet();  //操作有序set
    

        代码示例:

        @Test
        public void test01() {
            // redis 中保存数据
            //stringRedisTemplate.opsForValue().append("msg", "hello");
    
            // 读取数据
            String msg = stringRedisTemplate.opsForValue().get("msg");
            System.out.println("msg = " + msg);
    
            //操作列表
            stringRedisTemplate.opsForList().leftPush("myList", "1");
            stringRedisTemplate.opsForList().leftPush("myList", "2");
            stringRedisTemplate.opsForList().leftPush("myList", "3");
        }

      2、保存对象

        使用 Redis 保存自定义的 JavaBean 对象,JavaBean 需要实现序列化 Serializable 接口。

        示例:

        @Test
        public void test02() {
            Employee emp = employeeMapper.getEmpById(1);
            //默认如果保存对象,使用 jdk 序列化机制,序列化后的数据保存到 redis 中
            redisTemplate.opsForValue().set("emp-01", emp);
        }

        通过 Redis 的可视化工具看到的效果:

        

        默认使用的是 JDK 序列化机制来保存的。

        

          

        如果想把数据以 JSON 的方式保存,怎么办呢?

        (1)保存数据的时候,自己将对象转为 json 字符串

        (2)redisTemplate 有默认的序列化规则,可以自己定制序列化器

          配置自定义序列化器:

    @Configuration
    public class MyRedisConfig {
    
        @Bean
        public RedisTemplate<Object, Employee> empRedisTemplate(
                RedisConnectionFactory redisConnectionFactory)
                throws UnknownHostException {
    
            RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
            //设置默认的序列化器
            template.setDefaultSerializer(new Jackson2JsonRedisSerializer<Employee>(Employee.class));
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }

          保存数据:

        @Autowired
        RedisTemplate<Object, Employee> empRedisTemplate;  //使用自定义的 redisTemplate
        
        @Test
        public void test02() {
            Employee emp = employeeMapper.getEmpById(1);
    
            //如果想保存 JSON 字符串
            //1. 将数据以 json 的方式保存,自己将对象转为 json 字符串
            //2. redisTemplate 有默认的序列化规则
            empRedisTemplate.opsForValue().set("emp-02", emp);
    
        }

         查看效果:

          

  • 相关阅读:
    fms中使用的页签(使用的模板)
    layui—layer,一个可以让你想到即可做到的javascript弹窗(层)解决方案(转)
    mybatis--oracle 利用接口 实现简单的增删改查以及一对一的两表关联查询
    mybatis--oracle 利用配置 实现简单的增删改查
    Java DecimalFormat的主要功能及使用方法
    SpringMVC的@ResponseBody返回字符串乱码问题解决
    org.apache.commons.lang.exception.NestableRuntimeException等缺少jar包的解决办法
    Mybatis框架搭建和简单的增删改查
    Struts2上传
    Struts2转换器
  • 原文地址:https://www.cnblogs.com/niujifei/p/15731746.html
Copyright © 2020-2023  润新知