项目中经常访问的且不会经常改动的数据应该放在内存中,以获取用户的更好体验,那么Redis就是一个比较好的选择,这里记录一下项目中引入Jedis的使用步骤,希望对你有所帮助
一,搭建Redis服务器
- 这里就暂时不介绍了,很简单,网上一抓一大把。。。
- 需要注:
- Redis服务器的配置中有一项:protected-mode默认是yes,我们需要把这个置为no,否则是连接不上远程的,记得修改完成后重启或者重新加载配置文件哦
二,配置文件
- 配置Redis的properties文件
redis.hostname=127.0.0.1 redis.port=6379 redis.database=0 redis.pool.maxActive=600 redis.pool.maxIdle=300 redis.pool.maxWait=3000 redis.pool.testOnBorrow=true
- 编写JedisPoolWrapper类,如下
import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolWrapper { private JedisPool jedisPool; public JedisPoolWrapper(final JedisPoolConfig poolConfig, final String host, final int port) { try { jedisPool = new JedisPool(poolConfig, host, port); } catch (Exception e) { e.printStackTrace(); } } public JedisPool getJedisPool() { return jedisPool; } public void setJedisPool(JedisPool jedisPool) { this.jedisPool = jedisPool; } }
- 编写一个
JedisUtil
,用来封装各种Redis的操作,由于代码太多,就不粘贴了 - 在使用Redis的时候其配置如下:
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxActive}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="maxWaitMillis" value="${redis.pool.maxWait}" /> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /> </bean> <bean id="jedisWritePool" class="org.shreker.dof.core.cache.JedisPoolWrapper" depends-on="jedisPoolConfig"> <constructor-arg name="poolConfig" ref="jedisPoolConfig" /> <constructor-arg name="host" value="${redis.hostname}" /> <constructor-arg name="port" value="${redis.port}" type="int" /> </bean> <bean id="jedisKeys" class="org.shreker.dof.core.cache.JedisUtil$Keys" scope="singleton"> <constructor-arg ref="jedisUtil"></constructor-arg> </bean> <bean id="jedisStrings" class="org.shreker.dof.core.cache.JedisUtil$Strings" scope="singleton"> <constructor-arg ref="jedisUtil"></constructor-arg> </bean> <bean id="jedisLists" class="org.shreker.dof.core.cache.JedisUtil$Lists" scope="singleton"> <constructor-arg ref="jedisUtil"></constructor-arg> </bean> <bean id="jedisSets" class="org.shreker.dof.core.cache.JedisUtil$Sets" scope="singleton"> <constructor-arg ref="jedisUtil"></constructor-arg> </bean> <bean id="jedisHash" class="org.shreker.dof.core.cache.JedisUtil$Hash" scope="singleton"> <constructor-arg ref="jedisUtil"></constructor-arg> </bean> <bean id="jedisUtil" class="org.shreker.dof.core.cache.JedisUtil" scope="singleton"> <property name="jedisPool"> <ref bean="jedisWritePool" /> </property> </bean>
三,代码引入
- 不是所有的数据都适合放入Redis的,但是有一条,只要目标数据不是经常修改并且访问量比较大,那么就适合放入Redis;
- 注入实例
@Autowired private JedisUtil.Strings jedisStrings; @Autowired private JedisUtil.Keys jedisKeys;
- 设置值
jedisStrings.set(key, jsonString);
- 获取值
String result = jedisStrings.get(key);
- 删除
jedisKeys.del(key);
- 根据业务逻辑编写业务...跑起测试...