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 ...
最新文章
- three ways for reducing the level of anxiety
- 把准脉搏 U-Mail邮件系统2014开足马力
- 在ASP.NET Core微服务架构下使用数据库切分和扩展, 并用JMeter进行负载测试
- ssm执行linux 指令,Linux逻辑卷快照及ssm的使用
- 计算机学业测试答案解析,计算机测试题及答案.doc
- [转载] python中字符串编码形式及其所占字节
- Bazel C++ 基础[翻译]
- 结构体03:结构体指针
- java swing 删除事件_java swing清除事件队列
- limbo模拟器镜像Android,limbo模拟器win7镜像
- java中activeThread_java多线程机制中的Thread和Runnable()区别
- 3w最简单led灯电路图_三种常用的LED驱动电源电路图详解
- 一键抠图Portrait Matting人像抠图 (C++和Android源码)
- SCL译码matlab,CRC_polar_SC_SCL 码的SC译码算法,可设置不同信噪比, 码长 改为SCL 和CA 。核心 matlab 272万源代码下载- www.pudn.com...
- erdaicms旅游网站程序2017款新模版正式上线
- JAVAEE工程师入门技术之第1课day01_Java基础语法HelloWorld
- 爬取微信公众号详情页
- 2021年危险化学品经营单位主要负责人最新解析及危险化学品经营单位主要负责人新版试题
- android软件开发是什么?
- 131、PoE交换机能同时给多少摄像头供电