要先配置好服务端,项目中在正常使用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:**/@Configurationpublic class RedisListenerConfig {@BeanRedisMessageListenerContainer 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@Slf4jpublic class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}@Overridepublic void onMessage(Message message, byte[] pattern) {// // 用户做自己的业务处理即可,注意message.toString()可以获取失效的keyString expiredKey = message.toString();log.info("------------------redis key 失效; key = " + expiredKey);if (expiredKey.startsWith("delay")) {// 获取订单orderNOString 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);
}
}
