要先配置好服务端,项目中在正常使用redis
pom引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置文件
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
/**
* @author X-MD
* @Date 2020/9/25 0025
* @description:
**/
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
监听文件(触发处理业务)
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
/**
* @author X-MD
* @Date 2020/9/25 0025
* @description:
**/
@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
// // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
String expiredKey = message.toString();
log.info("------------------redis key 失效; key = " + expiredKey);
if (expiredKey.startsWith("delay")) {
// 获取订单orderNO
String orderNo = expiredKey.substring(expiredKey.lastIndexOf(":") + 1);
// 将待支付的订单改为已取消(超时未支付)
System.out.println("orderNo" + orderNo);
}
}
}
向redis里设置值
import com.redis.config.IbaseRedisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author X-MD
* @Date 2020/9/25 0025
* @description:
**/
@RequestMapping("/res")
@RestController
@Slf4j
public class RedisListener {
@Autowired
IbaseRedisService ibaseRedisService;
@GetMapping
public void test(){
ibaseRedisService.set("delay:121221212","",60L,0);
}
}