什么是Jedis

是redis官方推荐的java开发工具 , 使用java操作Redis的jar包 !

使用步骤

  • 1.导入对应的依赖

    <!--jedis  -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.62</version>
    </dependency>
    
  • 2.测试链接

    Jedis jedis = new Jedis("127.0.0.1",6379);
    System.out.println(jedis.ping());
    

Jedis启动事务

Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushDB();

JSONObject jsonObject = new JSONObject();
jsonObject.put("name","guoyuan");
jsonObject.put("sex","male");
String result = jsonObject.toJSONString();
//开启事务
Transaction multi = jedis.multi();
try {
    multi.set("user1",result);
    multi.set("user2",result);
    //执行事务
    multi.exec();
} catch (Exception e) {
    //取消事务
    multi.discard();
    e.printStackTrace();
} finally {
    System.out.println(jedis.get("user1"));
    System.out.println(jedis.get("user2"));
    //关闭连接
    jedis.close();
}

SpringBoot整合Jedis

SpringBoot操作数据:spring-data jpa , jdbc , mongodb , redis

SpringData 也是和SpringBoot齐名的项目

说明:在Spring Boot2.X之后,原来使用的Jedis被替换为了lettuce

jedis:采用的直连,多个线程操作的话,是不安全的,如果想去避免不安全的,使用jedis pool连接池,更像BIO模式

lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,更像 NIO模式

源码分析

@Configuration(
    proxyBeanMethods = false
)
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
    public RedisAutoConfiguration() {
    }

    @Bean
    @ConditionalOnMissingBean(name = {"redisTemplate"}) //可以自定义一个redisTemplate来替换这个
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        //默认的RedisTemplate没有过多的配置,redis对象都是需要序列化的
        //两个泛型都是Object的类型,后续使用需要强制转换成<String,Object>
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    //由于String是redis中最常用的类型,所以单独提出来了一个方法
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        return new StringRedisTemplate(redisConnectionFactory);
    }
}

使用步骤

  • 1.导入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  • 2.配置连接

    # SpringBoot所有配置类,都有一个自动配置类 RedisAutoConfiguration
    # 自动配置类都会绑定一个properties的配置文件 RedisProperties
    spring.redis.host=127.0.0.1
    spring.redis.port=6379
    
  • 3.测试连接

    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    void contextLoads() {
        
        //ops是操作相关的类型,例如opsForSet(),opsForList()
        redisTemplate.opsForValue().set("mykey","guoyuan");
        System.out.println(redisTemplate.opsForValue().get("mykey"));
    }
    

拓展:

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它采用一种 “键 : 值” 对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言

FastJSON

FastJSON 是由阿里巴巴工程师基于 JAVA 开发的一款 JSON 解析器和生成器,可用于将 Java 对象转换为其 JSON 表示形式,它还可以用于将 JSON 字符串转换为等效的 Java 对象。FastJSON 可以处理任意 Java 对象,包括没有源代码的预先存在的对象

文章作者: 郭远
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 郭远的博客空间
SpringBoot Redis SpringBoot Redis
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝