Redis — 集成

Redis — 集成

一、Java 集成 redis

  1. 集成方式:jedis

  2. maven依赖:

    <!-- 引入redis客户端依赖 -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.4.2</version>
    </dependency>
    
  3. 测试代码:

    import redis.clients.jedis.Jedis;
    
    /**
     * @projName: JavaSkillStack
     * @packgeName: indi.pentiumcm.redis
     * @className: RedisTest
     * @author: pentiumCM
     * @email: 842679178@qq.com
     * @date: 2021/10/19 14:08
     * @describe: redis 集成
     */
    public class RedisTest {
    
    
        public static void main(String[] args) {
            //连接本地的 Redis 服务
            Jedis jedis = new Jedis("localhost");
            System.out.println("连接成功");
            //查看服务是否运行
            System.out.println("服务正在运行: " + jedis.ping());
    
            // 1. 存储 字符串String
            jedis.set("user", "chenmin");
            System.out.println("String:" + jedis.get("user"));
    
            // 2. 存储 哈希hash
            jedis.hset("hash_user", "cm", "cm");
            jedis.hset("hash_user", "lhy", "lhy");
            System.out.println("hash:" + jedis.hget("hash_user", "cm"));
    
            // 3. 存储 列表list
            jedis.lpush("list_user", "cm");
            jedis.lpush("list_user", "lhy");
            System.out.println("list:" + jedis.lrange("list_user", 0, 10));
    
            // 4. 存储 集合set
            jedis.sadd("set_user", "cm");
            jedis.sadd("set_user", "lhy");
            System.out.println("set:" + jedis.smembers("set_user"));
    
            // 5. 存储 有序集合zset
            jedis.zadd("zset_user", 0.05, "5");
            jedis.zadd("zset_user", 0.1, "10");
            System.out.println("zset:" + jedis.zrange("zset_user", 0, 10));
        }
    }
    
    

二、spring 集成 redis

三、springboot 集成 redis

  • 参考资料:https://www.jianshu.com/p/5596c3a4978d
  1. maven依赖:

    <!-- SpringBoot redis依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  2. redis 配置 application.yml:

    • 截取 application.yml 中关于 redis 的配置如下:

      spring:
        # redis配置
        redis:
          # 地址
          host: 127.0.0.1
          # 端口,默认为6379
          port: 6379
          # 数据库索引
          database: 0
          password:
          # 连接超时时间
          timeout: 10s
          lettuce:
            pool:
              # 连接池中的最小空闲连接
              min-idle: 0
              # 连接池中的最大空闲连接
              max-idle: 8
              # 连接池的最大数据库连接数
              max-active: 8
              # #连接池最大阻塞等待时间(使用负值表示没有限制)
              max-wait: -1ms
      
  3. redis的配置类:

    • RedisConfig.java:

      import com.fasterxml.jackson.annotation.JsonAutoDetect;
      import com.fasterxml.jackson.annotation.PropertyAccessor;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import org.springframework.cache.annotation.CachingConfigurerSupport;
      import org.springframework.cache.annotation.EnableCaching;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.data.redis.connection.RedisConnectionFactory;
      import org.springframework.data.redis.core.*;
      import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
      import org.springframework.data.redis.serializer.StringRedisSerializer;
      
      /**
       * @projName: springbootlearn
       * @packgeName: indi.pentiumcm.springbootlearn.config
       * @className: RedisConfig
       * @author: pentiumCM
       * @email: 842679178@qq.com
       * @date: 2021/10/19 15:18
       * @describe: redis 配置类
       */
      @Configuration
      @EnableCaching //开启注解
      public class RedisConfig extends CachingConfigurerSupport {
      
      
          /**
           * retemplate相关配置
           *
           * @param factory
           * @return
           */
          @Bean
          public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
      
              RedisTemplate<String, Object> template = new RedisTemplate<>();
              // 配置连接工厂
              template.setConnectionFactory(factory);
      
              //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
              Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
      
              ObjectMapper om = new ObjectMapper();
              // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
              om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
              // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
              om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
              jacksonSeial.setObjectMapper(om);
      
              // 值采用json序列化
              template.setValueSerializer(jacksonSeial);
              //使用StringRedisSerializer来序列化和反序列化redis的key值
              template.setKeySerializer(new StringRedisSerializer());
      
              // 设置hash key 和value序列化模式
              template.setHashKeySerializer(new StringRedisSerializer());
              template.setHashValueSerializer(jacksonSeial);
              template.afterPropertiesSet();
      
              return template;
          }
      
      
          /**
           * String字符串类型数据操作
           *
           * @param redisTemplate
           * @return
           */
          @Bean
          public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
              return redisTemplate.opsForValue();
          }
      
      
          /**
           * hash类型的数据操作
           *
           * @param redisTemplate
           * @return
           */
          @Bean
          public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
              return redisTemplate.opsForHash();
          }
      
      
          /**
           * List列表类型的数据操作
           *
           * @param redisTemplate
           * @return
           */
          @Bean
          public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
              return redisTemplate.opsForList();
          }
      
          /**
           * Set无序集合类型的数据操作
           *
           * @param redisTemplate
           * @return
           */
          @Bean
          public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
              return redisTemplate.opsForSet();
          }
      
          /**
           * Zset有序集合类型的数据操作
           *
           * @param redisTemplate
           * @return
           */
          @Bean
          public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
              return redisTemplate.opsForZSet();
          }
      
      }
      
  4. redis 工具类:

    • RedisUtil.java:

      
      
  5. 接口用例:

    • RedisController.java:

      
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值