但行好事
莫论前程❤

StringRedisTemplate常用操作

maven–pom配置
<jedis.version>2.4.2</jedis.version>
<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>${jedis.version}</version>
</dependency>

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

xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 连接池配置 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!-- 最大连接数 -->
        <property name="maxTotal" value="30" />
        <!-- 最大空闲连接数 -->
        <property name="maxIdle" value="${redis.maxIdle}" />
        <!-- 每次释放连接的最大数目 -->
        <property name="numTestsPerEvictionRun" value="1024" />
        <!-- 释放连接的扫描间隔(毫秒) -->
        <property name="timeBetweenEvictionRunsMillis" value="30000" />
        <!-- 连接最小空闲时间 -->
        <property name="minEvictableIdleTimeMillis" value="1800000" />
        <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
        <property name="softMinEvictableIdleTimeMillis" value="10000" />
        <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
        <property name="maxWaitMillis" value="1500" />
        <!-- 在获取连接的时候检查有效性, 默认false -->
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
        <!-- 在空闲时检查有效性, 默认false -->
        <property name="testWhileIdle" value="true" />
        <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
        <property name="blockWhenExhausted" value="false" />
    </bean>

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.host}"/>
        <property name="port" value="${redis.port}"/>
        <property name="poolConfig" ref="poolConfig"/>
    </bean>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
    </bean>

</beans>

导入

    @Autowired
    private StringRedisTemplate redisTemplate;
  1. 向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().set("test", "100", 60*10, TimeUnit.SECONDS);
stringRedisTemplate.opsForValue().set("test", "100", 1, TimeUnit.DAYS);
  1. val做-1操作
stringRedisTemplate.boundValueOps("test").increment(-1); 
  1. 根据key获取缓存中的val
stringRedisTemplate.opsForValue().get("test")
  1. val +1
stringRedisTemplate.boundValueOps("test").increment(1);  
  1. 根据key获取过期时间
stringRedisTemplate.getExpire("test")
  1. 根据key获取过期时间并换算成指定单位
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)
  1. 根据key删除缓存
stringRedisTemplate.delete("test");
  1. 检查key是否存在,返回boolean值
stringRedisTemplate.hasKey("546545");
  1. 向指定key中存放set集合
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");
  1. 设置过期时间
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);
  1. 根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().isMember("red_123", "1")
  1. 根据key获取set集合
stringRedisTemplate.opsForSet().members("red_123");

因为微信小程序中用到了这个模板,所以我需要检查session是否过期,之前想的是先获取指定单位的时间日期,然后再用当前日期减去指定日期,只要大于0就是没过期,但是这样做没成功。最后找遍了百度,找到了一个

可以通过Key获取有效时间:

Long expire = redisTemplate.boundHashOps("red_123").getExpire();  

System.out.println("redis有效时间:"+expire+"S");  

通过判断有效时间是否大于0 ,就可以判断session是否过期了。

赞(1) 打赏
未经允许不得转载:刘鹏博客 » StringRedisTemplate常用操作
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏