Springboot統合redis格納セッション
16549 ワード
Springboot統合redis格納セッション
y maven依存に入る:
SessionConfigの作成
セッションの初期化
コントローラレイヤコード
プロファイル
redisは、次のように構成することもできます.
クラスタ構成:
高同時性ソリューション
ビジネス・データベース-』データ水平分割(パーティション・テーブル・ライブラリ)、読み書き分離
ビジネスアプリケーション-』論理コード最適化(アルゴリズム最適化)、共通データキャッシュ
アプリケーションサーバ-』逆静的エージェント、構成最適化、負荷等化(apache配布、マルチtomcatインスタンス)
システム環境-』JVMチューニング
ページ最適化-』ページ接続数を減らし、ページサイズを痩せる
1、動的資源と静的資源の分離;
2、CDN;
3、負荷バランス;
4、分散キャッシュ;
5、データベースの読み書き分離或いはデータの切り分け(垂直或いは水平);
6、サービス分散配置.
posted @
2019-02-20 13:03に着手したプログラマーが読む(
...) コメント(
...) コレクションの編集
y maven依存に入る:
org.springframework.boot
spring-boot-starter-redis
org.springframework.session
spring-session-data-redis
SessionConfigの作成
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
// redis
//maxInactiveIntervalInSeconds SpringSession ( : )
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class SessionConfig {
// ,
@Value("${redis.hostname:localhost}")
String HostName;
@Value("${redis.port:6379}")
int Port;
@Bean
public JedisConnectionFactory connectionFactory() {
JedisConnectionFactory connection = new JedisConnectionFactory();
connection.setPort(Port);
connection.setHostName(HostName);
return connection;
}
}
セッションの初期化
public class SessionInitializer extends AbstractHttpSessionApplicationInitializer{
public SessionInitializer() {
super(SessionConfig.class);
}
}
コントローラレイヤコード
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SessionController {
@Value("${server.port}")
private String PORT;
public static void main(String[] args) {
SpringApplication.run(SessionController.class, args);
}
@RequestMapping("/index")
public String index() {
return "index:" + PORT;
}
// @methodDesc: :( session )
@RequestMapping("/setSession")
public String setSession(HttpServletRequest request, String sessionKey, String sessionValue) {
HttpSession session = request.getSession(true);
session.setAttribute(sessionKey, sessionValue);
return "success,port:" + PORT;
}
// @methodDesc: :( Session )
@RequestMapping("/getSession")
public String getSession(HttpServletRequest request, String sessionKey) {
HttpSession session =null;
try {
session = request.getSession(false);
} catch (Exception e) {
e.printStackTrace();
}
String value=null;
if(session!=null){
value = (String) session.getAttribute(sessionKey);
}
return "sessionValue:" + value + ",port:" + PORT;
}
}
プロファイル
#redis
# Redis ( 0)
spring.redis.database=0
# Redis
spring.redis.host=localhost
# Redis
spring.redis.port=6379
#Redis
spring.redis.password=redis
# ( )
spring.redis.pool.max-active=8
# ( )
spring.redis.pool.max-wait=-1
#
spring.redis.pool.max-idle=8
#
spring.redis.pool.min-idle=0
# ( )
spring.redis.timeout=0
#springboot tomcat
server.port=8080
redisは、次のように構成することもできます.
@Configuration
@EnableCaching//
//maxInactiveIntervalInSeconds:session , 1800 , 60
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)// , redis session
public class RedisConfig {
// redisTemplate
// String-String
// @Bean
public RedisTemplate RedisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(factory);
return stringRedisTemplate;
}
@Bean
public RedisTemplate RedisTemplate2(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
//GenericJackson2JsonRedisSerializer ,redis json
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
template.afterPropertiesSet();
return template;
}
@Bean
public RedisTemplate
クラスタ構成:
spring:
redis:
cluster:
nodes:
- Centos6701:6379
- Centos6701:6380
- Centos6702:6380
- Centos6702:6379
- Centos6703:6379
- Centos6703:6380
高同時性ソリューション
ビジネス・データベース-』データ水平分割(パーティション・テーブル・ライブラリ)、読み書き分離
ビジネスアプリケーション-』論理コード最適化(アルゴリズム最適化)、共通データキャッシュ
アプリケーションサーバ-』逆静的エージェント、構成最適化、負荷等化(apache配布、マルチtomcatインスタンス)
システム環境-』JVMチューニング
ページ最適化-』ページ接続数を減らし、ページサイズを痩せる
1、動的資源と静的資源の分離;
2、CDN;
3、負荷バランス;
4、分散キャッシュ;
5、データベースの読み書き分離或いはデータの切り分け(垂直或いは水平);
6、サービス分散配置.
posted @
2019-02-20 13:03に着手したプログラマーが読む(
...) コメント(
...) コレクションの編集