携程阿Polo(阿Polo)配置核心的Java样例客户端运行和调节澳门美高梅手机网站

参考:https://github.com/ctripcorp/apollo/wiki/Apollo%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97#23-java%E6%A0%B7%E4%BE%8B%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%90%AF%E5%8A%A8

证实:Spring Boot简化了Spring Data
Redis的引入,只要引进spring-boot-starter-data-redis之后会自行下载相应的Spring
Data
Redis和Jedis客户端,能够减去版本那块的争持,当然,假使要引进别的版本也是能够的。版本控制全部交由Parent引进的Spring
Boot节点实行田管!,提出不用引进最新版本的spring-boot-starter-data-redis,防止造成别的争执。

澳门美高梅手机网站,前提先搭建好本地单机环境:http://www.cnblogs.com/EasonJim/p/7643630.html

有个要是:假若在应用Spring/Spring
MVC项目时引进的Spring Data
Redis和Jedis客户端时就算存在版本难题,现身莫名奇怪的题材,那么能够选择Spring
Boot各类版本对应使用的Spring Data Redis和Jedis。

解压导入Eclipse:

Spring Boot上面采纳Spring Data Redis相当的大约,只要求引进Spring Data
Redis和在配备文件application.properties中安排地址即可,因为它有spring-boot-autoconfigure来贯彻了活动注入。

澳门美高梅手机网站 1

上边是实在项目例子:

关键使用的是apollo-demo

POM:

在布置大旨后台新建好App和配置文件项

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jsoft.springboottest</groupId>
    <artifactId>springboottest1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboottest1</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Add typical dependencies for a web application -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 热部署模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
        </dependency>

        <!-- Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

澳门美高梅手机网站 2

application.properties:

注意:八个布局文件的名目中,第1个是新建App时暗中同意的,首要把项填入即可。而第一个是选项添加Namespace时,内定个人形式才能输入自定义名称。

# REDIS(RedisProperties)
# (普通集群,不使用则不用开启)在群集中执行命令时要遵循的最大重定向数目。
# spring.redis.cluster.max-redirects=
# (普通集群,不使用则不用开启)以逗号分隔的“主机:端口”对列表进行引导。
# spring.redis.cluster.nodes=
# 连接工厂使用的数据库索引。
spring.redis.database=0
# 连接URL,将覆盖主机,端口和密码(用户将被忽略),例如:redis://user:password@example.com:6379
spring.redis.url=
# Redis服务器主机。
spring.redis.host=localhost
# 登录redis服务器的密码。
spring.redis.password=
# 启用SSL支持。
spring.redis.ssl=false
# 池在给定时间可以分配的最大连接数。使用负值无限制。
spring.redis.pool.max-active=8
# 池中“空闲”连接的最大数量。使用负值表示无限数量的空闲连接。
spring.redis.pool.max-idle=8
# 连接分配在池被耗尽时抛出异常之前应该阻塞的最长时间量(以毫秒为单位)。使用负值可以无限期地阻止。
spring.redis.pool.max-wait=-1
# 目标为保持在池中的最小空闲连接数。这个设置只有在正面的情况下才有效果。
spring.redis.pool.min-idle=0
# Redis服务器端口。
spring.redis.port=6379
# (哨兵模式,不使用则不用开启)Redis服务器的名称。
# spring.redis.sentinel.master=
# (哨兵模式,不使用则不用开启)主机:端口对的逗号分隔列表。 
# spring.redis.sentinel.nodes=
# 以毫秒为单位的连接超时。
spring.redis.timeout=0

回到apollo-demo项目上,内定Class运维,扩张如下的VM运行参数:

证实:以上是单机版本的,假如是集群的只需求打开这两项:

澳门美高梅手机网站 3

# (普通集群,不使用则不用开启)在群集中执行命令时要遵循的最大重定向数目。
spring.redis.cluster.max-redirects=
# (普通集群,不使用则不用开启)以逗号分隔的“主机:端口”对列表进行引导。
spring.redis.cluster.nodes=127.0.0.1:1001,127.0.0.1:1002

澳门美高梅手机网站 4

专注:一旦打开了集群形式,那么依据单机的配置就会覆盖。

并铺排刚才设置的AppID:

晋升:能够如此说,上边包车型地铁布署相应是最全的了。当然上边针对客户端的操作臆度会相比少,比如哨兵情势,分片等等的,因为这个高可用在劳务一度做了,假若想要在客户端实现那些,那么能够再度注入想要落成Bean即可。比如注入建立工厂,落成协调的Session。

澳门美高梅手机网站 5

使用:

启航后方可瞥见如下的音信已经通过中远距离起动起来:

package com.jsoft.springboottest.springboottest1.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    private static final Logger logger = LoggerFactory.getLogger(TestController.class);

    @Autowired
    RedisTemplate redisTemplate;

    @Autowired
    StringRedisTemplate stringRedisTemplate;

    @RequestMapping("/set")
    public void set() {
        redisTemplate.opsForValue().set("test", "4321");
    }

    @RequestMapping("/show")
    public String show(){

        logger.info(redisTemplate.opsForValue().get("test").toString());
        return "Hello World";        
    }
}

澳门美高梅手机网站 6

表达:只须求注入RedisTemplate即可。

对于怎么需求传递四个VM参数,原因如下:

使用技巧:

一、第1个参数用于钦命环境,env先通过/opt/settings/server.propertis钦定的去读取,如若未有就径直读取系统特性-D提供的,假诺都尚未,那么您挂定了。

在市面上大概存在二种个用法,第11中学是针对性opsForValue,另1种是execute的,那么那两种的施用分别如下:

二、由于使用的是全体代码引进的德姆o项目,所以在app-core中对此meta_server的地方选拔了变量去读取,而以此变量提供的法龙时系统品质-D去提供。在此处:

1、在redistemplate中配置Serializer

澳门美高梅手机网站 7

ValueOperations<String, User> valueops = redisTemplate.opsForValue();
valueops.set(user.getId(), user);

而只固然利用本身打包上传到仓库的Client时,那几个Client最后会含有Core,这个地方早就自行钦点了,所以不须要系统天性。

二、不在redistemplate中配备塞里alizer,而是在Service的达成类中单独内定Serializer。

当然,下面所截图只是会在卷入的时候修改那里的变量,而实在去读取的一对在代码上,借使还要钦命了系统质量的,那么优先级是系统个性最高。

boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
      public Boolean doInRedis(RedisConnection redisConnection) throws DataAccessException { 
          RedisSerializer<String> redisSerializer = redisTemplate .getStringSerializer(); 
          byte[] key = redisSerializer.serialize(user.getId());
          byte[] value = redisSerializer.serialize(user.getName()); 
          return redisConnection.setNX(key, value); } }); 
     return result;
}

 

也正是说那两者的界其他种类化是团结实现的。

 

以身作则项目:https://github.com/easonjim/5_java_example/tree/master/springboottest/springboottest6

 

参考:

https://docs.spring.io/spring-boot/docs/1.5.7.RELEASE/reference/htmlsingle/(官方文书档案,搜索spring.redis)

http://blog.csdn.net/i_vic/article/details/53081241

http://www.cnblogs.com/ityouknow/p/5748830.html

https://www.cnblogs.com/edwinchen/p/3816938.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注