redis在spring中的应用

redis是我最近经常使用的一种用于存储数据的工具,感觉它与一般数据库相似,却又没有那么复杂,不需要建表也不需要使用sql,API功能手册很简单,我一般用来存储一些临时性的信息或者额外拓展的信息(比如用于存储微信开发需要用到的网页授权access_token 客户抽奖信息等)

spring配置如下:

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<property name="minIdle" value="${redis.cache.minIdle}"/>
	<property name="maxIdle" value="${redis.cache.maxIdle}"/>
	<property name="maxTotal" value="${redis.cache.maxTotal}"/>
	<property name="maxWaitMillis" value="${redis.cache.maxWaitMillis}"/>
	<property name="minEvictableIdleTimeMillis" value="${redis.cache.minEvictableIdleTimeMillis}"/>
	<property name="numTestsPerEvictionRun" value="${redis.cache.numTestsPerEvictionRun}"/>
	<property name="testOnBorrow" value="${redis.cache.testOnBorrow}"/>
	<property name="testOnReturn" value="${redis.cache.testOnReturn}"/>
</bean>

<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
	<constructor-arg index="0" type="org.apache.commons.pool2.impl.GenericObjectPoolConfig"
					 ref="jedisPoolConfig"/>
	<constructor-arg index="1" type="java.lang.String" value="${redis.cache.host}"/>
	<constructor-arg index="2" type="int" value="${redis.cache.port}"/>
	<constructor-arg index="3" type="int" value="${redis.cache.timeout}"/>
	<constructor-arg index="4" type="java.lang.String" value="${redis.cache.password}"/>
	<constructor-arg index="5" type="int" value="${redis.cache.database}"/>
</bean>

 properties配置文件:

redis.cache.minIdle=20
redis.cache.maxIdle=1000
redis.cache.maxTotal=1000
redis.cache.maxWaitMillis=10000
redis.cache.minEvictableIdleTimeMillis=60000
redis.cache.numTestsPerEvictionRun=3
redis.cache.testOnBorrow=true
redis.cache.testOnReturn=true

#cache redis
redis.cache.host=(host地址)
redis.cache.port=6379
redis.cache.timeout=3000
redis.cache.password=123456
redis.cache.database=1

需要的包:

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
</dependency>

用法(这里是使用类似jdbc连接池的连接方法):

@Service("cacheService")
public class CacheService {
    @Resource
    private JedisPool jedisPool;

    public void cacheAccessToken(int orgid, String token, int expire) {
        String key = "web:token:" + orgid;
        try (Jedis jd = jedisPool.getResource()) {
            jd.set(key, token);
            jd.expire(key, expire);
        }
    }

    public String getAccessToken(int orgid) {
        String key = "web:token:" + orgid;
        try (Jedis jd = jedisPool.getResource()) {
            return jd.get(key);
        }
    }
    
    public void cacheJsapiTicket(int orgid, String ticket, int expire) {
        String key = "web:ticket:" + orgid;
        try (Jedis jd = jedisPool.getResource()) {
            jd.set(key, ticket);
            jd.expire(key, expire);
        }
    }

    public String getJsapiTicket(int orgid) {
        String key = "web:ticket:" + orgid;
        try (Jedis jd = jedisPool.getResource()) {
            return jd.get(key);
        }
    }

}

最后附上redisAPI文档地址:http://doc.redisfans.com/

猜你喜欢

转载自zhenguoli.iteye.com/blog/2380801