服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Spring集成jedis的配置与使用简单实例

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

2021-07-21 11:458blues Java教程

今天小编就为大家分享一篇关于Spring集成jedis的配置与使用简单实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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

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

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

maven导入相关包:

?
1
2
3
4
5
6
<!-- redis依赖包 -->
<dependency>
 <groupid>redis.clients</groupid>
 <artifactid>jedis</artifactid>
 <version>2.9.0</version>
</dependency>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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连接池的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#最大分配的对象数
redis.pool.maxactive=200
#最大能够保持idel状态的对象数
redis.pool.maxidle=50
redis.pool.minidle=10
redis.pool.maxwaitmillis=20000
#当池内没有返回对象时,最大等待时间
redis.pool.maxwait=300
#格式:redis://:[密码]@[服务器地址]:[端口]/[db index]
redis.uri = redis://:12345@127.0.0.1:6379/0
redis.host = 127.0.0.1
redis.port = 6379
redis.timeout=30000
redis.password = 12345
redis.database = 0

二者操作代码类似,都是先注入连接池,然后通过连接池获得jedis实例,通过实例对象操作redis。

shardedjedis操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@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操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@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;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/u014320421/article/details/80576232

延伸 · 阅读

精彩推荐