Redis内存淘汰策略及失效监听

1、Redis六种淘汰策略

noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。

allkeys-lru:在主键空间中,优先移除最近未使用的key。(推荐)

volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。

allkeys-random:在主键空间中,随机移除某个key。

volatile-random:在设置了过期时间的键空间中,随机移除某个key。

volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。

2、配置Redis淘汰策略

    设置Redis内存大小限制

    # vi redis.conf

    maxmemory    100mb #设置redis占内存100兆

    当数据达到限定大小后,会选择配置的策略淘汰数据

    设置Redis的淘汰策略

    # vi redis.conf

    maxmemory-policy volatile-lru

3、配置Redis key失效监听

    # vi redis.conf

    notify-keyspace-events EX

    SpringBoot整合key失效监听

    @Configuration

    public class RedisListenerConfig {

        @Bean

        RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {

            RedisMessageListenerContainer container =new RedisMessageListenerContainer();

            container.setConnectionFactory(connectionFactory);

            return container;

        }

    }


    @Component

    public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {    

        public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {        

            super(listenerContainer);    

        }

        @Override    

        public void onMessage(Message message, byte[] pattern) {        

            String expiraKey = message.toString();        

            System.out.println(expiraKey+"失效了");       

         }

    }

你可能感兴趣的:(Redis内存淘汰策略及失效监听)