把list集合存入Redis并设置过期时间

1.需要导入的jar包

            <!-- redis -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.1</version>
            </dependency>
            
            <!-- redis.clients/jedis -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.9.0</version>
            </dependency>
            
            <!-- commons-pool2 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>2.6.1</version>
            </dependency>

            <!-- spring-data-redis -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>2.1.5.RELEASE</version>
            </dependency>

2.代码实现

​
    //redis模板
    @Autowired
	private RedisTemplate<String, Address> redisAddress;

    
    //查询地址
	@Override
	public List<Address> address() {
		//判断redis库是否有这个key
		if(redisAddress.hasKey("address")){
			System.err.println("redis的地址");
			//如果有就查询redis里这个list集合(第一个参数是key,0,-1是查询所有)
			List<Address> range = redisAddress.opsForList().range("address", 0,-1);
			//返回这个集合
			return range;
		}else{
			//从mysql里查询这个集合
			List<Address> address = merchantMapper.address();
			//存入redis
			redisAddress.opsForList().leftPushAll("address", address);
			//给redis设置毫秒值 
            //第一个参数是key
            //第二个参数是值
            //第三个参数是时间颗粒度转换,MILLISECONDS是毫秒,所以这个redis的TTl是一小时
			redisAddress.expire("address",1000*60*60,TimeUnit.MILLISECONDS);
			//返回这个集合
			return address;
		}
	}

​

3.效果展示

redisAddress.hasKey("address")为false

redisAddress.hasKey("address")为true

两次查询都是能查出值的,第一次查询是从mysql里查出来然后存到Redis,第二次查询是查redis

4.查看redis这个key的过期时间

因为过期时间设置的是1000*60*60(毫秒值一小时)时间颗粒度是TimeUnit.MILLISECONDS(毫秒)

TTl查出的过期时间是秒 3600/60/60=1小时

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐