spring 使用redis集群配置
上面两篇介绍了redis集群的配置合一些基本的概念,所以接下来当然是要在项目中使用咯,redis的java支持已经做的非常好了,所以我们来试着使用这些api来进行redis的操作,首先我们需要操作redis的架包:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency>
我们需要做的仅仅是在spring配置文件中注入这些基本类,然后自己实现dao,下面是配置文件:
<context:property-placeholder ignore-unresolvable="true" location="classpath:yonyou.properties" /><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="1000"/> <property name="maxIdle" value="10"/> <property name="minIdle" value="1"/><property name="maxWaitMillis" value="30000"/> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> <property name="testWhileIdle" value="true"/><!-- <property name="testWhileIdle" value="true"/> --></bean><bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" destroy-method="destroy"><constructor-arg ref="jedisPoolConfig"/> <constructor-arg> <!--如果以后需要扩展集群,只需要复制一份redis,修改端口,然后在这里配置即可--><list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="127.0.0.1"/><constructor-arg index="1" value="6379"/><constructor-arg index="2" value="instance:01"/></bean><bean class="redis.clients.jedis.JedisShardInfo"><constructor-arg index="0" value="127.0.0.1"/><constructor-arg index="1" value="6380"/><constructor-arg index="2" value="instance:02"/></bean> <bean class="redis.clients.jedis.JedisShardInfo"><constructor-arg index="0" value="127.0.0.1"/><constructor-arg index="1" value="6381"/><constructor-arg index="2" value="instance:03"/></bean></list></constructor-arg></bean><!--java帮我们同步sentinel的信息,将主从信息同步到客户端来--><bean class="redis.clients.jedis.JedisSentinelPool"><constructor-arg index="0" value="mymaster"/><constructor-arg index="1"><set><value>127.0.0.1:26379</value></set></constructor-arg><constructor-arg index="2" ref="jedisPoolConfig"/></bean>
上面配置好了以后,我们就相当于将redis集群给映射过来了,下来我们只需要做一些操作,涉及到数据的CRUD.
package com.yonyou.hotusm.module.nosql.redis;import redis.clients.jedis.ShardedJedis; //这个接口是操作sharedJedis public interface RedisDataSource {public abstract ShardedJedis getRedisClient();public void returnResource(ShardedJedis shardedJedis);public void returnResource(ShardedJedis shardedJedis,boolean broken); }
实现:
package com.yonyou.hotusm.module.nosql.redis; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository;import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool;@Repository("redisDataSource") public class RedisDataSourceImpl implements RedisDataSource {private static final Logger log = LoggerFactory.getLogger(RedisDataSourceImpl.class);@Autowiredprivate ShardedJedisPool shardedJedisPool;public ShardedJedis getRedisClient() {try {ShardedJedis shardJedis = shardedJedisPool.getResource();return shardJedis;} catch (Exception e) {log.error("getRedisClent error", e);}return null;}public void returnResource(ShardedJedis shardedJedis) {shardedJedisPool.close();//shardedJedisPool.returnResource(shardedJedis); }public void returnResource(ShardedJedis shardedJedis, boolean broken) {if (broken) {shardedJedisPool.close();//shardedJedisPool.returnBrokenResource(shardedJedis);} else {shardedJedisPool.close();//shardedJedisPool.returnResource(shardedJedis); }} }
下面就是操作jedis的具体类了:
@Repository("jedisTemplate") public class JedisTemplate {private static final Logger log = LoggerFactory.getLogger(JedisTemplate.class);@Autowiredprivate RedisDataSource redisDataSource;public void disconnect() {ShardedJedis shardedJedis = redisDataSource.getRedisClient();shardedJedis.disconnect();}/*** 设置单个值* * @param key* @param value* @return*/public String set(String key, String value) {String result = null;ShardedJedis shardedJedis = redisDataSource.getRedisClient();if (shardedJedis == null) {return result;}boolean broken = false;try {result = shardedJedis.set(key, value);} catch (Exception e) {e.printStackTrace();log.error(e.getMessage(), e);broken = true;} finally {redisDataSource.returnResource(shardedJedis, broken);}return result;}/*** 获取单个值* * @param key* @return*/public String get(String key) {String result = null;ShardedJedis shardedJedis = redisDataSource.getRedisClient();if (shardedJedis == null) {return result;}boolean broken = false;try {result = shardedJedis.get(key);} catch (Exception e) {log.error(e.getMessage(), e);broken = true;} finally {redisDataSource.returnResource(shardedJedis, broken);}return result;}
真正的还有很多操作,list,set,哈希什么的,我就不把代码贴出来了,看看api就知道了
spring 使用redis集群配置相关推荐
- Spring集成Redis集群(含spring集成redis代码)
代码地址如下: http://www.demodashi.com/demo/11458.html 一.准备工作 安装 Redis 集群 安装参考: http://blog.csdn.net/zk673 ...
- SpringCloud实现Redis集群配置
在配置文件中添加以下 spring:redis:cluster:# 各 Redis 节点信息nodes: 密码# 执行命令超时时间command-timeout: 15000# 重试次数max-att ...
- springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别
springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...
- springBoot整合redis集群配置
最近发现这篇博客阅读量比较大,今天特意抽空创建了一个可运行的开源项目. 项目的代码和之前的博客内容相比,做了些优化,请大家参考项目源码. 开源项目源码: springboot-redis-cluste ...
- Redis集群配置和常见异常解决
Redis集群配置和常见异常解决 参考文章: (1)Redis集群配置和常见异常解决 (2)https://www.cnblogs.com/hzb462606/p/11121281.html 备忘一下 ...
- Docker高级篇-Docker容器内Redis集群配置
Docker容器内Redis集群配置 1.三主三从集成配置 1.1.关闭防火墙.启动docker服务 1.2.新建6个docker容器实例 1.3.进入容器redis-node-1,构建主从关系 1. ...
- Redis 集群配置教程
Linux环境Redis 集群配置教程 下载 一.确认单节点的配置已完成. 1.确认已安装Redis 2.Redis的安装包解压后的目录必须存在,不能丢. 3.修改Redis的环境变量,并source ...
- 【Redis】Redis集群配置
参考链接 Redis集群配置
- windows版本下的 redis 集群配置
windows下的redis配置 https://www.cnblogs.com/thirteen-zxh/p/9187875.html ( 集群后篇) https://www.cnblogs.com ...
最新文章
- Python调用外部程序——os.system()和subprocess.call()
- 如何用ASP获取真实IP地址_草根编程
- Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”
- typora图床教程-阿里云版
- 基于VHDL自动售邮票机设计
- 带你深入探究云原生时代的分布式操作系统 Kubernetes
- 记录一次,事务遇到消息发送,疏忽给自己挖坑
- matlab 一维 平滑,一维加噪信号的平滑处理(3)
- (12)Node.js核心模块fs—实现文件复制和压缩
- Java技术面试汇总
- MVC应用程序JsonResult()的练习
- Atiti.ui原理与gui理论
- 中文技术文档写作规范(汇总整理版)
- JAVA在线看CAD图纸快速入门
- android极光推送问题,极光推送- 常见问题 - 极光文档
- OSChina 周四乱弹 —— 帅帅帅,飞一般的感觉~
- U8 用友 ERP 库存查询SQL
- 百度地图 截图java_我从百度地图静态图API中通过url获取到的图片,用java有没有什么办法可以把图片上的百度logo去掉呢...
- python 求3位数的水仙花数_python 求3到8位数的水仙花数Pycharm实现
- 知行合一ArduPilot | ArduPilot系统框架简述