jedis是redis的java客户端,spring将redis连接池作为一个bean配置。
redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool”,这是基于hash算法的一种分布式集群redis客户端连接池。
另一种是“redis.clients.jedis.JedisPool”,这是单机环境适用的redis连接池。
maven导入相关包:
redis.clients
jedis
2.9.0
ShardedJedisPool是redis集群客户端的对象池,可以通过他来操作ShardedJedis,下面是ShardedJedisPool的xml配置,spring-jedis.xml:
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
${redis.pool.maxActive}
${redis.pool.maxIdle}
下面是单机环境下redis连接池的配置:
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
${redis.pool.maxActive}
${redis.pool.maxIdle}
对应的classpath:properties/redis.properties.xml为:
#最大分配的对象数
redis.pool.maxActive=200
#最大能够保持idel状态的对象数
redis.pool.maxIdle=50redis.pool.minIdle=10redis.pool.maxWaitMillis=20000
#当池内没有返回对象时,最大等待时间
redis.pool.maxWait=300
#格式:redis://:[密码]@[服务器地址]:[端口]/[db index]
redis.uri = redis://:12345@127.0.0.1:6379/0redis.host= 127.0.0.1redis.port= 6379redis.timeout=30000redis.password= 12345redis.database= 0
二者操作代码类似,都是先注入连接池,然后通过连接池获得jedis实例,通过实例对象操作redis。
ShardedJedis操作:
@Autowiredprivate ShardedJedisPool shardedJedisPool;//注入ShardedJedisPool
@RequestMapping(value= "/demo_set",method =RequestMethod.GET)
@ResponseBodypublicString demo_set(){//获取ShardedJedis对象
ShardedJedis shardJedis =shardedJedisPool.getResource();//存入键值对
shardJedis.set("key1","hello jedis");//回收ShardedJedis实例
shardJedis.close();return "set";
}
@RequestMapping(value= "/demo_get",method =RequestMethod.GET)
@ResponseBodypublicString demo_get(){
ShardedJedis shardedJedis=shardedJedisPool.getResource();//根据键值获得数据
String result = shardedJedis.get("key1");
shardedJedis.close();returnresult;
}
Jedis操作:
@Autowiredprivate JedisPool jedisPool;//注入JedisPool
@RequestMapping(value= "/demo_set",method =RequestMethod.GET)
@ResponseBodypublicString demo_set(){//获取ShardedJedis对象
Jedis jedis =jedisPool.getResource();//存入键值对
jedis.set("key2","hello jedis one");//回收ShardedJedis实例
jedis.close();return "set";
}
@RequestMapping(value= "/demo_get",method =RequestMethod.GET)
@ResponseBodypublicString demo_get(){
Jedis jedis=jedisPool.getResource();//根据键值获得数据
String result = jedis.get("key2");
jedis.close();returnresult;
}