小编给大家分享一下redis与spring整合使用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
方法如下
第一步,在项目中加入redis的pom代码:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.0</version>
</dependency>
第二步,spring中加载redis配置文件:applicationContext-redis.xml,内容如下
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}" />
</bean>
<bean class="redis.clients.jedis.ShardedJedisPool">
<constructor-arg index="0" ref="poolConfig" />
<constructor-arg index="1">
<list>
<bean class="redis.clients.jedis.JedisShardInfo">
<constructor-arg index="0" value="${redis.node1.host}" />
<constructor-arg index="1" value="${redis.node1.port}" />
</bean>
</list>
</constructor-arg>
</bean>
</beans>
第三步,编写连接redis服务端的属性文件:redis.properties
redis.maxTotal=100
redis.node1.host=127.0.0.1
redis.node1.port=6379
第四步,编写redis的相关操作方法类,Function类和RedisService类:
Funcrion类:
package xx.service;
/**
* 为了抽取相同的操作代码
* @author yeying
*<p>Description:</p>
*<p>Company:</p>
* @date:2017年12月5日 下午9:02:44
*/
public interface Function<T,E> {
public T callback(E e);
}
RedisService类:
package com.taotao.common.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
/**
* redis的相关操作
* @author yeying
*<p>Description:</p>
*<p>Company:</p>
* @date:2017年12月3日 下午2:11:47
*/
@Service
public class RedisService {
@Autowired(required=false) //需要再注入进去
private ShardedJedisPool shardedJedisPool;
private <T> T execute(Function<T, ShardedJedis> fun){
ShardedJedis shardedJedis = null;
try {
// 从连接池中获取到jedis分片对象
shardedJedis = shardedJedisPool.getResource();
// 从redis中获取数据
return fun.callback(shardedJedis);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != shardedJedis) {
// 关闭,检测连接是否有效,有效则放回到连接池中,无效则重置状态
shardedJedis.close();
}
}
return null;
}
/**
* 执行set操作
* @param key
* @param value
* @return
*/
public String set(final String key,final String value){
return this.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
return e.set(key, value);
}
});
}
/**
* 执行set操作,并设置生存时间,单位为秒
* @param key
* @param value
* @param seconds
* @return
*/
public String set(final String key,final String value,final Integer seconds){
return this.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
String str =e.set(key, value);
e.expire(key, seconds);
return str;
}
});
}
/**
* 执行get操作
* @param key
* @return
*/
public String get(final String key){
return this.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
return e.get(key);
}
});
}
/**
* 执行set操作
* @param key
* @return
*/
public Long del(final String key){
return this.execute(new Function<Long, ShardedJedis>() {
@Override
public Long callback(ShardedJedis e) {
return e.del(key);
}
});
}
/**
* 设置生存时间,单位为秒
* @param key
* @param seconds
* @return
*/
public Long expire(final String key, final Integer seconds) {
return this.execute(new Function<Long, ShardedJedis>() {
@Override
public Long callback(ShardedJedis e) {
return e.expire(key, seconds);
}
});
}
}
第五步,启动redis服务,redis-server.exe,双击打开:
看完了这篇文章,相信你对“redis与spring整合使用的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。