redis的简单使用(java)

redis的简单使用(java)

redis官网: http://www.redis.cn/

一 redis入门

01 导入坐标

<!--使用redisTemplate-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

02 配置文件

spring:
  application:
    name: demo-test-template
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ajava?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
    username: root
    password: root

  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:
    timeout: 6000ms  # 连接超时时长(毫秒)
    jedis:
      pool:
        max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1ms      # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10      # 连接池中的最大空闲连接
        min-idle: 5       # 连接池中的最小空闲连接

03 模板对象

模板对象 序列化方式 序列化效果
RedisTemplate JdkSerializationRedisSerializer
StringRedisTemplate StringRedisSerializer

API

//操作string类型
redisTemplate.opsForValue();

//操作hash类型
redisTemplate.opsForHash();

//操作list类型
redisTemplate.opsForList();

//操作set类型
redisTemplate.opsForSet();

//操作有序set类型
redisTemplate.opsForZSet();

04 test类

@SpringBootTest
@RunWith(SpringRunner.class)
public class AppTest {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * redis测试
     */
    @Test
    public void redisServerTest(){
        stringRedisTemplate.opsForValue().set("key12-15","123", Duration.ofSeconds(100L));
       
    }
}

思考一个问题:

  • 为什么加载了redis的starter(起步依赖)之后,RedisTemplate对象会自动被new出来,并可以@Autowired了呢?

SpringBoot工作原理: https://www.cnblogs.com/lyn8100/p/15837349.html

二 redis失效key触发事件

01 redis配置类

/**
 * Redis缓存配置类
 */
@Configuration
public class RedisConfigurer extends CachingConfigurerSupport {

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {

        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }

}

02 监听者类

/**
 * redis 失效key的监听者类
 * @Author lyn
 */
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 针对redis数据失效事件,进行数据处理
     * @param message
     * @param pattern
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        // message.toString()可以获取失效的key
        String expiredKey = message.toString();
        //后去解析key,调用其他服务执行任务
        System.out.println(expiredKey);
    }
}
posted @ 2022-01-23 20:48  进击的小蔡鸟  阅读(327)  评论(0编辑  收藏  举报