Spring Bootフレームワーク-Redisトピック
11800 ワード
一、Redisの概要
2008年、創業会社Merziaはパフォーマンスのボトルネックを解決するために初期版redisを開発し、その後redisは正式にオープンし、膨大なユーザー層を徐々に持っている.これまでredisの最新バージョンは5.0.7で、公式サイトのアドレスはhttps://redis.io/.
redisはデータの永続化をサポートし、メモリ内のデータをディスクに保存し、再起動時に再ロードして使用することができます.
redisは、単純なkey-valueタイプのデータだけでなく、list、set、zset、hashなどのデータ構造のストレージも提供します.
redisは、データのバックアップ、すなわちmaster-slaveモードのデータバックアップをサポートする、マスタスレーブ同期をサポートし、データはマスタサーバから任意の数のスレーブサーバに同期することができる.
二、JedisPoolConfig方式集積
JedisPoolConfigはredis 2から2.1リリースではサポートが開始され、使用方法は簡単ですが、非同期はサポートされていません.
1、依存を追加
2、コード実現
三、RedisTemplate方式集積
RedisTemplateはredis 2から.9バージョンからサポートを開始し、springboot統合、非同期をサポートします.
1、依存を追加
2、プロファイル
3、コード実現
2008年、創業会社Merziaはパフォーマンスのボトルネックを解決するために初期版redisを開発し、その後redisは正式にオープンし、膨大なユーザー層を徐々に持っている.これまでredisの最新バージョンは5.0.7で、公式サイトのアドレスはhttps://redis.io/.
redisはデータの永続化をサポートし、メモリ内のデータをディスクに保存し、再起動時に再ロードして使用することができます.
redisは、単純なkey-valueタイプのデータだけでなく、list、set、zset、hashなどのデータ構造のストレージも提供します.
redisは、データのバックアップ、すなわちmaster-slaveモードのデータバックアップをサポートする、マスタスレーブ同期をサポートし、データはマスタサーバから任意の数のスレーブサーバに同期することができる.
二、JedisPoolConfig方式集積
JedisPoolConfigはredis 2から2.1リリースではサポートが開始され、使用方法は簡単ですが、非同期はサポートされていません.
1、依存を追加
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.1.0version>
dependency>
2、コード実現
/**
*
*/
@Bean
public JedisPool createRedisPool() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxActive(Integer.valueOf(maxActive));
jedisPoolConfig.setMaxIdle(Integer.valueOf(maxIdle));
jedisPoolConfig.setMaxWait(Integer.valueOf(maxWait));
jedisPoolConfig.setTestOnBorrow(Boolean.valueOf(testOnBorrow));
return new JedisPool(jedisPoolConfig, host, port, timeout, auth)
}
三、RedisTemplate方式集積
RedisTemplateはredis 2から.9バージョンからサポートを開始し、springboot統合、非同期をサポートします.
1、依存を追加
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
2、プロファイル
spring:
redis:
database: 0 # Redis ( 0)
host: 127.0.0.1 # Redis
port: 6379 # Redis
password: # Redis ( )
pool:
max-active: 8 # ( )
max-wait: -1 # ( )
max-idle: 8 #
min-idle: 0 #
timeout: 0 # ( )
3、コード実現
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
/**
* redis
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
return rcm;
}
/**
* retemplate
* @param factory
* @return
*/
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate<>();
//
template.setConnectionFactory(factory);
// Jackson2JsonRedisSerializer redis value ( JDK )
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
// ,field,get set, ,ANY private public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// , final ,final , String,Integer
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// json
template.setValueSerializer(jacksonSeial);
// StringRedisSerializer redis key
template.setKeySerializer(new StringRedisSerializer());
// hash key value
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(jacksonSeial);
template.afterPropertiesSet();
return template;
}
/**
* hash
* @param redisTemplate
* @return
*/
@Bean
public HashOperations hashOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForHash();
}
/**
* redis
* @param redisTemplate
* @return
*/
@Bean
public ValueOperations valueOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForValue();
}
/**
*
* @param redisTemplate
* @return
*/
@Bean
public ListOperations listOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForList();
}
/**
*
* @param redisTemplate
* @return
*/
@Bean
public SetOperations setOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForSet();
}
/**
*
* @param redisTemplate
* @return
*/
@Bean
public ZSetOperations zSetOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForZSet();
}
}