Springcloud +redis集群

摘要:
春季云中的春季靴版本高于2。十、 X,版本不同。与集群对应的客户端api方法和连接池是不同的。有关具体操作,请参阅git上的源代码。Redis集群的配置相对简单。添加jar:<dependency><groupId>org。弹簧框架。启动弹簧启动启动程序数据redis˂/artifica
springcloud  中 springboot版本是2.X.X以上的,版本不同,集群对应的客户端api方法,连接池不一样.
 

具体操作可以看git上源码.

redis集群的配置比较简单.

添加jar:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
redis集群的配置文件:
redis:
    cache:
      cluster-nodes:
       192.168.200.X:X ,192.168.200.X:X 192.168.200.X:X ,192.168.200.X:X  ,192.168.200.X:X ,192.168.200.X:X
      # 执行命令超时时间
      command-timeout: 15000
      # 重试次数
      max-attempts: 5
      # 跨集群执行命令时要遵循的最大重定向数量
      max-redirects: 3
      # 连接池最大连接数(使用负值表示没有限制)
      max-active: 16
      # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-wait: -1
      # 连接池中的最大空闲连接
      max-idle: 8
      # 连接池中的最小空闲连接
      min-idle: 0
      # 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
      test-on-borrow: true
 

package com.ztgx.redis.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Set;
import java.util.concurrent.TimeUnit;

@Component
public class RedisService {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    //这样该方法支持多种数据类型
    public void set(String key , Object object, Long time){
        //开启事务权限
        stringRedisTemplate.setEnableTransactionSupport(true);
        try {
            //开启事务
            stringRedisTemplate.multi();

            String argString =(String)object;  //强转下
            stringRedisTemplate.opsForValue().set(key, argString);

            //成功就提交
            stringRedisTemplate.exec();
        } catch (Exception e) {
            //失败了就回滚
            stringRedisTemplate.discard();

        }
        if (object instanceof String ) {  //判断下是String类型不
            String argString =(String)object;  //强转下
            //存放String类型的
            stringRedisTemplate.opsForValue().set(key, argString);
        }
        //如果存放Set类型
        if (object instanceof Set) {
            Set<String> valueSet =(Set<String>)object;
            for(String string:valueSet){
                stringRedisTemplate.opsForSet().add(key, string);  //此处点击下源码看下 第二个参数可以放好多
            }
        }
        //设置有效期
        if (time != null) {
            stringRedisTemplate.expire(key, time, TimeUnit.SECONDS);
        }

    }
    //做个封装
    public void setString(String key, Object object){
        String argString =(String)object;  //强转下
        //存放String类型的
        stringRedisTemplate.opsForValue().set(key, argString);
    }
    public void setSet(String key, Object object){
        Set<String> valueSet =(Set<String>)object;
        for(String string:valueSet){
            stringRedisTemplate.opsForSet().add(key, string);  //此处点击下源码看下 第二个参数可以放好多
        }
    }

    public String getString(String key){
        return    stringRedisTemplate.opsForValue().get(key);
    }

}
 

 

package com.ztgx.redis.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * Web层 - Test
 * Created by xiepengcheng on 2017/9/12.
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private RedisService redisService;

    @RequestMapping("/setString")
    public String setString(String key, String value){
        key="name";value="zhangsan";
        redisService.set(key, value, 500l); //超时时间500s   l表示long型
        return "成功";
    }

    @RequestMapping("get")
    public String get(String key){
        key="name";
        return redisService.getString(key);
    }
}
 

package com.ztgx.redis;



import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
//@EnableSwagger2
@EnableCaching
public class RedisApplication {
    public static void main(String[] args) {
        SpringApplication.run( RedisApplication.class, args  );
    }

}

免责声明:文章转载自《Springcloud +redis集群》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker 安装 Redis(指定配置文件方式启动)03- web表单测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

stringstream用法

分为istream和ostringstream. 1 std::string name("zeta");2 int age = 27;3 4 ostringstream os;5 os << "name:"<<name<<""<<"age:"<<age<<...

ServletContextListener使用详解(监听Tomcat启动、关闭)

  在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。   当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处...

JAVA缓存的实现

缓存可分为二大类:  一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;   二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.  下面为一个简单的缓存代码  Java代码  package lhm.hcy.guge.frameset.cache;      ...

二、获取微信用户openId

/// <summary> /// 登录首页 /// </summary> /// <returns></returns> public ActionResult Index() { if (Session["isTrue"] == null) { string weixinA...

node redis操作

1、redis 菜鸟驿站(先在在这里学习redis的安装、配置和命令行操作)   http://www.runoob.com/redis/redis-tutorial.html 2、再介绍一个redis 图形化工具(个人非常建议) redis desktop Manager  https://www.cnblogs.com/zheting/p/767015...

kafka springboot (或 springcloud ) 整合

狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 + 面试必备 【博客园总入口 】 疯狂创客圈 经典图书 : 《SpringCloud、Nginx高并发核心编程》 大厂必备 + 大厂必备 + 大厂必备 【博客园总入口 】 入大厂+涨工资必备: 高并发【 亿级流量IM实战】 实战系列 【 Sprin...