首页 > 开发 > Java > 正文

Spring集成jedis的配置与使用简单实例

2024-07-14 08:43:46
字体:
来源:转载
供稿:网友

jedis是redis的java客户端,spring将redis连接池作为一个bean配置。

redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool”,这是基于hash算法的一种分布式集群redis客户端连接池。

另一种是“redis.clients.jedis.JedisPool”,这是单机环境适用的redis连接池。

maven导入相关包:

  <!-- redis依赖包 -->  <dependency>   <groupId>redis.clients</groupId>   <artifactId>jedis</artifactId>   <version>2.9.0</version>  </dependency>

ShardedJedisPool是redis集群客户端的对象池,可以通过他来操作ShardedJedis,下面是ShardedJedisPool的xml配置,spring-jedis.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsd    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  <!-- 引入jedis的properties配置文件 -->  <!--如果你有多个数据源需要通过<context:property-placeholder管理,且不愿意放在一个配置文件里,那么一定要加上ignore-unresolvable=“true"-->  <context:property-placeholder location="classpath:properties/redis.properties" ignore-unresolvable="true" />  <!--shardedJedisPool的相关配置-->  <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">    <!--新版是maxTotal,旧版是maxActive-->    <property name="maxTotal">      <value>${redis.pool.maxActive}</value>    </property>    <property name="maxIdle">      <value>${redis.pool.maxIdle}</value>    </property>    <property name="testOnBorrow" value="true"/>    <property name="testOnReturn" value="true"/>  </bean>  <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" scope="singleton">    <constructor-arg index="0" ref="jedisPoolConfig" />    <constructor-arg index="1">      <list>        <bean class="redis.clients.jedis.JedisShardInfo">          <constructor-arg name="host" value="${redis.uri}" />        </bean>      </list>    </constructor-arg>  </bean></beans>

下面是单机环境下redis连接池的配置:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsd    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  <!-- 引入jedis的properties配置文件 -->  <!--如果你有多个数据源需要通过<context:property-placeholder管理,且不愿意放在一个配置文件里,那么一定要加上ignore-unresolvable=“true"-->  <context:property-placeholder location="classpath:properties/redis.properties" ignore-unresolvable="true" />  <!--Jedis连接池的相关配置-->  <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">    <!--新版是maxTotal,旧版是maxActive-->    <property name="maxTotal">      <value>${redis.pool.maxActive}</value>    </property>    <property name="maxIdle">      <value>${redis.pool.maxIdle}</value>    </property>    <property name="testOnBorrow" value="true"/>    <property name="testOnReturn" value="true"/>  </bean>  <bean id="jedisPool" class="redis.clients.jedis.JedisPool">    <constructor-arg name="poolConfig" ref="jedisPoolConfig" />    <constructor-arg name="host" value="${redis.host}" />    <constructor-arg name="port" value="${redis.port}" type="int" />    <constructor-arg name="timeout" value="${redis.timeout}" type="int" />    <constructor-arg name="password" value="${redis.password}" />    <constructor-arg name="database" value="${redis.database}" type="int" />  </bean></beans>

对应的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操作:

  @Autowired  private ShardedJedisPool shardedJedisPool;//注入ShardedJedisPool  @RequestMapping(value = "/demo_set",method = RequestMethod.GET)  @ResponseBody  public String demo_set(){    //获取ShardedJedis对象    ShardedJedis shardJedis = shardedJedisPool.getResource();    //存入键值对    shardJedis.set("key1","hello jedis");    //回收ShardedJedis实例    shardJedis.close();    return "set";  }  @RequestMapping(value = "/demo_get",method = RequestMethod.GET)  @ResponseBody  public String demo_get(){    ShardedJedis shardedJedis = shardedJedisPool.getResource();    //根据键值获得数据    String result = shardedJedis.get("key1");    shardedJedis.close();    return result;  }

Jedis操作:

  @Autowired  private JedisPool jedisPool;//注入JedisPool  @RequestMapping(value = "/demo_set",method = RequestMethod.GET)  @ResponseBody  public String 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)  @ResponseBody  public String demo_get(){    Jedis jedis = jedisPool.getResource();    //根据键值获得数据    String result = jedis.get("key2");    jedis.close();    return result;  }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VeVb武林网的支持。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表