1.环境
需要spring.jar、common-pool.jar.jedisjar
2.简介
分片(shardedjedis)将不同的key分配到不同的redis server上,达到横向扩展的目的。
3.配置application.xml
<!-- 加载redis配置文件 --><context:property-placeholder location="classpath:redis.properties"/>
<!-- 连接池配置 --><bean id="poolCfg" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxActive}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="minIdle" value="1"/> <property name="maxWaitMillis" value="${redis.pool.maxWait}" /> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> </bean><!-- port记得指定为int类型 --> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"> <constructor-arg index="0" ref="poolCfg"></constructor-arg> <constructor-arg index="1"> <list> <bean name="master" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis1.ip}"></constructor-arg> <constructor-arg index="1" value="${redis1.port}" type="int"></constructor-arg> <property name="password" value="${redis2.auth}"/> </bean> <bean name="slaver" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis2.ip}"></constructor-arg> <constructor-arg index="1" value="${redis2.port}" type="int"></constructor-arg> <property name="password" value="${redis2.auth}"/> </bean> </list> </constructor-arg> </bean>
4.获取资源,释放资源
@Repository("jedisDataResource") public class JedisDataResourceImpl implements JedisDataResource{ @Resource(name="shardedJedisPool") private ShardedJedisPool sharededJedisPool; @Override public ShardedJedis getResource() { ShardedJedis shardedJedis=null; try { shardedJedis =sharededJedisPool.getResource(); return shardedJedis; } catch (Exception e) { if(null != sharededJedisPool) sharededJedisPool.close(); } return null; } @Override public void returnResource(ShardedJedis shardedJedis) { if(shardedJedis!=null) shardedJedis.close(); } }
5.dao层
public interface UserRedisDao { /**获取用户名*/ double getUserName(String key); }
@Repository("userRedisDao") public class UserRedisDaoImpl implements UserRedisDao{ @Resource private JedisDataResource jedisDataResource; @Override public String getUserName(String key) { ShardedJedis shardedJedis = jedisDataResource.getResource(); if (null == shardedJedis) return null; try { return shardedJedis.get(key); } catch (Exception e) { e.printStackTrace(); } finally { jedisDataResource.returnResource(shardedJedis); } }}
6.service
public interface CommodityRedisService { String getUserName(String key); }
@Service("userRedisService") public class UserRedisServiceImpl implements UserRedisService{ @Autowired private UserRedisDao UserRedisDao; @Override public String increaseCollectNum(String key) { return userRedisDao.getUserName(key); } }
时间: 2024-10-29 19:10:55