这里写自定义目录标题
SpringMVC+Jedis过期监听配置
引入Jar包pom.xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.4.RELEASE</version>
</dependency>
配置文件
<!-- 连接池参数 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.pool.maxIdle}" />
<property name="minIdle" value="${redis.pool.minIdle}" />
<!-- <property name="maxTotal" value="${redis.pool.maxTotal}" />
<property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />-->
<property name="minEvictableIdleTimeMillis" value="${redis.pool.minEvictableIdleTimeMillis}"></property>
<property name="numTestsPerEvictionRun" value="${redis.pool.numTestsPerEvictionRun}"></property>
<property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}"></property>
<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
<property name="testOnReturn" value="${redis.pool.testOnReturn}" />
<property name="testWhileIdle" value="${redis.pool.testWhileIdle}"></property>
</bean>
<!-- 配置jedis -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pwd}" p:pool-config-ref="jedisPoolConfig"
/>
<!-- 将监听者类 放入Spring容器 -->
<bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.jxx.app.listener.MyMessageDelegateImpl"/>
</constructor-arg>
</bean>
<bean id="myMessageDelegateImpl" class="com.jxx.app.listener.MyMessageDelegateImpl"/>
<!-- 配置监听者容器 -->
<!-- 将监听者类 放入Spring容器 -->
<bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.jxx.app.listener.ExpiredMessageDelegateImpl"/>
</constructor-arg>
</bean>
<!-- 配置监听者容器 -->
<bean id="redisContainer" class="org.springframework.data.redis.listener.RedisMessageListenerContainer">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
<property name="messageListeners">
<map>
<entry key-ref="messageListener">
<bean class="org.springframework.data.redis.listener.ChannelTopic">
<constructor-arg value="__keyevent@0__:expired"/>
</bean>
</entry>
</map>
</property>
</bean>
就是普通pojo类不用实现和继承
public interface ExpiredMessageDelegate {
void handleMessage(String message);
void handleMessage(Map message);
void handleMessage(byte[] message);
void handleMessage(Serializable message);
void handleMessage(Serializable message, String channel);
}
public class ExpiredMessageDelegateImpl implements ExpiredMessageDelegate {
@Override
public void handleMessage(String message) {
System.out.println(message);
}
@Override
public void handleMessage(Map message) {
System.out.println(message);
}
@Override
public void handleMessage(byte[] message) {
System.out.println(message);
}
@Override
public void handleMessage(Serializable message) {
System.out.println(message);
}
@Override
public void handleMessage(Serializable message, String channel) {
System.out.println(message);
}
}
也可以继承 MessageListener 也是OK的 看自己需要
public class RedisKeyExpiredListener implements MessageListener {
private static Logger logger = LoggerFactory.getLogger(RedisKeyExpiredListener.class);
@Override
public void onMessage(Message message, byte[] bytes) {
System.out.println(message);
}
}
配置文件是这样
<!-- 将监听者类 放入Spring容器 -->
<bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.jxx.app.listener.RedisKeyExpiredListener"/>
</constructor-arg>
</bean>