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/