上面两篇介绍了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集群配置相关推荐

  1. Spring集成Redis集群(含spring集成redis代码)

    代码地址如下: http://www.demodashi.com/demo/11458.html 一.准备工作 安装 Redis 集群 安装参考: http://blog.csdn.net/zk673 ...

  2. SpringCloud实现Redis集群配置

    在配置文件中添加以下 spring:redis:cluster:# 各 Redis 节点信息nodes: 密码# 执行命令超时时间command-timeout: 15000# 重试次数max-att ...

  3. springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别

    springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...

  4. springBoot整合redis集群配置

    最近发现这篇博客阅读量比较大,今天特意抽空创建了一个可运行的开源项目. 项目的代码和之前的博客内容相比,做了些优化,请大家参考项目源码. 开源项目源码: springboot-redis-cluste ...

  5. Redis集群配置和常见异常解决

    Redis集群配置和常见异常解决 参考文章: (1)Redis集群配置和常见异常解决 (2)https://www.cnblogs.com/hzb462606/p/11121281.html 备忘一下 ...

  6. Docker高级篇-Docker容器内Redis集群配置

    Docker容器内Redis集群配置 1.三主三从集成配置 1.1.关闭防火墙.启动docker服务 1.2.新建6个docker容器实例 1.3.进入容器redis-node-1,构建主从关系 1. ...

  7. Redis 集群配置教程

    Linux环境Redis 集群配置教程 下载 一.确认单节点的配置已完成. 1.确认已安装Redis 2.Redis的安装包解压后的目录必须存在,不能丢. 3.修改Redis的环境变量,并source ...

  8. 【Redis】Redis集群配置

    参考链接 Redis集群配置

  9. windows版本下的 redis 集群配置

    windows下的redis配置 https://www.cnblogs.com/thirteen-zxh/p/9187875.html ( 集群后篇) https://www.cnblogs.com ...

最新文章

  1. Python调用外部程序——os.system()和subprocess.call()
  2. 如何用ASP获取真实IP地址_草根编程
  3. Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”
  4. typora图床教程-阿里云版
  5. 基于VHDL自动售邮票机设计
  6. 带你深入探究云原生时代的分布式操作系统 Kubernetes
  7. 记录一次,事务遇到消息发送,疏忽给自己挖坑
  8. matlab 一维 平滑,一维加噪信号的平滑处理(3)
  9. (12)Node.js核心模块fs—实现文件复制和压缩
  10. Java技术面试汇总
  11. MVC应用程序JsonResult()的练习
  12. Atiti.ui原理与gui理论
  13. 中文技术文档写作规范(汇总整理版)
  14. JAVA在线看CAD图纸快速入门
  15. android极光推送问题,极光推送- 常见问题 - 极光文档
  16. OSChina 周四乱弹 —— 帅帅帅,飞一般的感觉~
  17. U8 用友 ERP 库存查询SQL
  18. 百度地图 截图java_我从百度地图静态图API中通过url获取到的图片,用java有没有什么办法可以把图片上的百度logo去掉呢...
  19. python 求3位数的水仙花数_python 求3到8位数的水仙花数Pycharm实现
  20. 知行合一ArduPilot | ArduPilot系统框架简述

热门文章

  1. Linux下计划任务和标准化工作流程
  2. 【原创】jquery常见的条件判断类型
  3. Java程序猿笔记——基于redis分布式锁实现“秒杀”
  4. SQL语句技巧:查询时巧用OR实现逻辑判断
  5. 将java项目传输到centos7服务端
  6. Codeforces 447C - DZY Loves Sequences
  7. 杭电 1272 poj 1308 小希的迷宫
  8. Win7碎片整理在哪?
  9. spring-boot2
  10. AMF3通讯协议实例