技术标签: FAQ springboot redis
1. 引入pom
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
2. 实现自动配置导入
2.1 定义yml内容
redis:
cluster:
nodes: 192.168.1.47:8082,192.168.1.47:8083,192.168.1.47:8084,192.168.1.47:8085,192.168.1.47:8086,192.168.1.47:8087
node: 192.168.1.21
port: 6379
password: tina1002
timeout: 2000
database: 1
maxIdle: 10
minIdle: 10
maxTotal: 20
maxAttempts: 5
2.2 定义导入类
@Data
public class RedisConfig {
//node address
private Set<String> nodes;
private String node;
//port for redis
private Integer port;
//password for redis
private String password;
private Integer timeout;
private Integer database;
private Integer maxIdle;
private Integer minIdle;
private Integer maxTotal;
private Integer maxAttempts;
}
2.3 定义属性类
@Data
@ConfigurationProperties(prefix = "redis.cluster")
public class RedisConfigProperty {
//node address
private Set<String> nodes;
private String node;
//port for redis
private Integer port;
//password for redis
private String password;
private Integer timeout;
private Integer database;
private Integer maxIdle;
private Integer minIdle;
private Integer maxTotal;
private Integer maxAttempts;
}
2.4 自动导入设置
@Configuration
@EnableConfigurationProperties(RedisConfigProperty.class)
@ConditionalOnClass(RedisConfig.class)
@ConditionalOnProperty(prefix = "redis.cluster", value = "", matchIfMissing = true)
public class RedisAutoConfig {
@Autowired
private RedisConfigProperty redisConfigProperty;
@Bean
public RedisConfig redisConfig(){
RedisConfig redisConfig = new RedisConfig();
redisConfig.setNodes(redisConfigProperty.getNodes());
redisConfig.setNode(redisConfigProperty.getNode());
redisConfig.setPort(redisConfigProperty.getPort());
redisConfig.setPassword(redisConfigProperty.getPassword());
redisConfig.setDatabase(redisConfigProperty.getDatabase());
redisConfig.setTimeout(redisConfigProperty.getTimeout());
redisConfig.setMaxTotal(redisConfigProperty.getMaxTotal());
redisConfig.setMinIdle(redisConfigProperty.getMinIdle());
redisConfig.setMaxIdle(redisConfigProperty.getMaxIdle());
redisConfig.setMaxAttempts(redisConfigProperty.getMaxAttempts());
return redisConfig;
}
2.5 实现单机和集群代码
@Configuration
public class RedisServer {
@Autowired
private RedisConfig redisConfig;
@Bean
public JedisCluster redisCluster() {
if (CollectionUtils.isEmpty(redisConfig.getNodes())) {
throw new RuntimeException();
}
// 设置redis集群的节点信息
Set<HostAndPort> nodes = redisConfig.getNodes().stream().map(node -> {
String[] nodeInfo = node.split(":");
if (nodeInfo.length == 2) {
return new HostAndPort(nodeInfo[0], Integer.parseInt(nodeInfo[1]));
} else {
return new HostAndPort(nodeInfo[0], 6379);
}
}).collect(Collectors.toSet());
// 配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(redisConfig.getMaxTotal());
jedisPoolConfig.setMaxIdle(redisConfig.getMaxIdle());
jedisPoolConfig.setMinIdle(redisConfig.getMinIdle());
// 创建jediscluster,传入节点列表和连接池配置
//JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig);
JedisCluster cluster = new JedisCluster(nodes,redisConfig.getTimeout(),redisConfig.getTimeout()
,redisConfig.getMaxAttempts(),redisConfig.getPassword(),jedisPoolConfig);
System.out.println("cluster=="+cluster);
return cluster;
}
@Bean
public Jedis jedis() {
// 配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(redisConfig.getMaxTotal());
jedisPoolConfig.setMaxIdle(redisConfig.getMaxIdle());
jedisPoolConfig.setMinIdle(redisConfig.getMinIdle());
JedisPool pool = new JedisPool(jedisPoolConfig, redisConfig.getNode(), redisConfig.getPort(),
redisConfig.getTimeout(), redisConfig.getPassword(), redisConfig.getDatabase());
System.out.println("pool=="+pool.getResource());
return pool.getResource();
}
}
2.6 测试功能
@Test
public void test() {
System.out.println("redisConfig=="+redisConfig);
jedis.set("jedis","1222");
String j = jedis.get("jedis");
System.out.println("jedis==="+j);
jedisCluster.set("jedisCluster","121312");
String jc = jedisCluster.get("jedisCluster");
System.out.println("jedisCluster=="+jc);
}
测试结果
:输出日志信息,包含任务的布置情况 :自动指定设备布置任务 :设置可见设备,例如机器上有4个GPU,但设置只对一个GPU可见,则该进程无法访问其他设备 :获取所有物理设备(整块) :建立逻辑分区 :获取所有逻辑设备(分块) :设置内存自增长,需在程序开始的时候就被设置因此,本机有两块物理GPU先做一个默认gpu设置的实验,作为对照组。基础代码:容器内进行训练:默认情况下,此demo每步运行花费6ms。查看GPU占用情况:发现仅仅这一个进程就几乎占满GPU,对资源浪费十分严重。因此,进行
为什么80%的码农都做不了架构师?>>> ...
在本指南中,你将了解到服务器虚拟化、操作系统虚拟化、主机式虚拟化(hosted virtualization)和裸机虚拟化(bare-metal virtualization)的一些细节和它们的差异。还可以了解一下叫做混合虚拟化(Hybrid Virtualization)的新型虚拟技术,以及Microsoft的2008计划如何影响虚拟领域。VMware发布ESX已 经有七年了,虽然VMwar...
MongoDB的$project时间戳转日期,$group日期分组
文章目录一、直方图(1) 图像均衡化二、傅里叶变换(1)低通滤波(2)高通滤波一、直方图语法:cv2.calcHist(images,channels,mask,histSize,ranges)- images:原图像格式为uint8或float32,当传入函数时需要用[]括起来使用;- channels: 同样用中括号括起来,告诉程序统计图像的直方图。如果是灰度图,就为[0],如果是彩色图像,传入参数为[0][1],[2]对应着BGR- mask:掩模图像。如果要统计整幅图想的直方图,为Non
提起奥地利,很多人的第一印象就是维也纳的金色大厅、莫扎特,还有阿尔卑斯山的壮丽美景。其实奥地利的电商市场一样很美丽,是欧洲新增的一片蓝海市场。这也使得不少跨境卖家争先进行布局,那奥地利的市场潜力究竟怎么样呢?本文Nox聚星就和大家好好聊一聊。
1.首先在layui中布局好数据表格创建一个table实例最简单的方式是,在页面放置一个元素 ,然后通过 table.render() 方法指定该容器,如下所示:1.<link rel="stylesheet" href="/layui/css/layui.css" media="all">2.<table id="demo" lay-filter="test"></table>3.<script src="/layui/layui.js"><
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gt;&lt;% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + re...
题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y &lt; 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。...
在~/.wgetrc中设定代理http_proxy = http://ip_or_domainname:80/ftp_proxy = http://ip_or_domainname:80/use_proxy...
今天从一个目录下拷贝一份文件到另外一个目录下时:[email protected]:~$cp jdk-7u79-linux-x64.tar /usr/lib/jvm出现如下提示:Permission denied一、表面上看是因为权限不足,因此可以通过对usr文件夹进行授权的方式解决:[email protected]:~$sudo chmod -R 777 usr其中-R 是指级联应用到目录里的所有...
针对AT24Cxx系列eeprom存储器,写的时候有越页功能,不用考虑页边界,I2C用软件模拟实现,完善中…#define SDA1() PORTC|=1< #define SDA0() PORTC&=~(1< #define SDAout() DDRC|=1< #define SDAin() DDRC&=~(1< #define RSDA() PINC&(1< #define SCL1() PORTC|=1< #define S