SpringBoot集成Redis

概述

Reids面向Java推出了Jedis,提供了与Redis命令对应封装的API,可以在Reids官网下载。

spring-data-redis提供了在spring中通过简单的配置去访问Redis服务。
对Redis底层开发包进行了高度封装,其中的RedisTemplate提供了Redis的各种操作。

spring-data-redis针对Jedis提供了这些功能:

  1. 连接池自动管理,提供了高度封装了RedisTemplate
  2. 将同一数据类型的操作封装为operation接口
    operation接口:
    • ValueOperations:简单的K-V操作
    • HashOperations:map类型操作
    • ListOperations:list类型操作
    • SetOperations:set类型操作
    • ZSetOperations:zset 类型操作
  3. 针对数据的序列化反序列化,提供了多种可选择的策略(RedisSerializer)
    1. JdkSerializationRedisSerializer
      POJO对象(实体类)存储取出使用JDK本身的序列化机制

    2. StringRedisSerializer
      K 或 V 为string的场景,根据指定的编码格式charset将字节序列转为字符串
      new String(bytes, charset)string.getBytes(charset)的封装
      是最轻量级和高效的策略

    3. JacksonJsonRedisSerializer
      jackson-json可以将实体类JSON格式互相转换,存储在Redis中

搭建

1. 添加Reids依赖

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

2. 配置Redis信息

spring:
  redis: # redis配置
    host: 122.112.196.221   # 服务器地址
    port: 6379              # Redi端口6379
    password: 123           # 在redis.conf里设置密码
    database: 0             # 选择一个数据库:0~15,默认使用0
    pool:
      max-active: 8         # 连接池最大连接数(使用负值表示没有限制)
      max-wait: -1ms        # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-idle: 8           # 连接池中的最大空闲连接
      min-idle: 0           # 连接池中的最小空闲连接
      timeout: 10000ms      # 连接超时时间(毫秒),取值范围为0~100000。默认值为0,表示无限制。

3. 注入RedisTemplate

@Autowired 
RedisTemplate redisTemplate;

4. 测试

新增,查询,删除

	@Autowired
    RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        //System.out.println(user);
        ValueOperations operations = redisTemplate.opsForValue();
        operations.set("name", "jim");//序列化为json格式 list对象
        Admin admin = new Admin();
        admin.setId(1);
        admin.setAccount("admin");
        admin.setPassword("123");
        operations.set("admin"+admin.getId(),admin,100, TimeUnit.MICROSECONDS);
        System.out.println("has: "+redisTemplate.hasKey("admin1"));
        System.out.println("admin1: "+operations.get("admin1"));
        System.out.println("name: "+operations.get("name"));
        System.out.println(redisTemplate.delete("admin1"));
        System.out.println(redisTemplate.delete("name"));

    }

在这里插入图片描述
序列化
序列化配置类

@Configuration
public class RedisConfig {//不让redis进行转码(会乱码)

    /**
     * 序列化 键:值
     * @param connectionFactory  是LettuceConnectionFactory的实例
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        //实体对象与json格式相互转换的序列化器
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        //key-value为string的序列化器
        StringRedisSerializer redisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setHashKeySerializer(redisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值