Spring BootのRedisを巧みに使う
Spring BootのRedisから転載
Redisの紹介
Redisは現在、業界で最も広く使用されているメモリデータストレージです.Memcachedに比べて、Redisはhashes、lists、setsなど、より豊富なデータ構造をサポートし、データの永続化をサポートします.このほか、Redisはトランザクション、HA、プライマリ・スレーブ・ライブラリなどのクラス・データベースの特性も提供します.Redisはキャッシュシステムとデータベースのいくつかの特性を兼ね備えているため、豊富な応用シーンを持っていると言える.この論文ではSpring BootにおけるRedisの2つの典型的な応用シーンを紹介する.使用方法
1、依存パッケージの導入
org.springframework.bootspring-boot-starter-data-redisorg.apache.commonscommons-pool2
Spring Bootは、Redisに統合されたコンポーネントパッケージを提供します.spring-boot-starter-data-redis、spring-boot-starter-data-redisはspring-data-redisおよびlettuceに依存します.Spring Boot 1.0のデフォルトはJedisクライアントで、2.0はLettuceに置き換えられますが、Spring Boot 1.5から使用する場合は.Xを切り替えると、spring-boot-starter-data-redisが私たちの違いを隔離しているため、ほとんど違いを感じません.
Lettuceは、優れたnetty NIOフレームワークを利用して複数の接続を効率的に管理する、同じRedisConnectionを共有できる、伸縮性のあるスレッドで安全なRedisクライアントです.
2、プロファイルの追加
3、cacheの構成クラスを追加する
注記:@EnableCachingを使用してキャッシュを開きます.
4、よし、これからはそのまま使える
以上はすべて手動で使用する方法で、どのようにデータベースを検索する時に自動的にキャッシュを使用しますか?
5、自動的に方法によってキャッシュを生成する
valueの値はRedisにキャッシュされたkey共有セッションです
分散システムでは、Session共有には多くのソリューションがあり、キャッシュに管理されるのが最も一般的なソリューションの1つであるべきであり、Spring Sessionの公式説明
Spring Session provides an API and implementations for managing a user’s session information.
Spring Sessionは、サーブレットHttpSessionを作成および管理する一連のスキームを提供します.Spring SessionはクラスタSession(Clustered Sessions)機能を提供し、デフォルトでは外部のRedisを使用してSessionデータを格納し、Session共有の問題を解決します.使用方法
1、導入依存
2、Session配置:
maxInactiveIntervalInSeconds:セッションの有効期限を設定し、Redisセッションを使用した後、元Spring Bootのserver.session.timeoutプロパティは有効になりません.
では、これで構成が整いました.テストしてみましょう.
3、テスト
テストメソッドの追加sessionidの取得
このうち147276480000は失効時間であり、この時間後にSessionが失効することを意味し、db 031986-8 ecc-48 d 6-b 471-b 137 a 3 ed 6 bc 4はsessionIdであり、登録http://localhost:8080/uid発見が一致したのは、SessionがRedisで有効な管理を行っていることを示しています.Sessionを2台または複数台で共有する方法
実は上の手順で別の項目で再構成し、起動すると自動的にセッション共有が行われます.
Redisの紹介
Redisは現在、業界で最も広く使用されているメモリデータストレージです.Memcachedに比べて、Redisはhashes、lists、setsなど、より豊富なデータ構造をサポートし、データの永続化をサポートします.このほか、Redisはトランザクション、HA、プライマリ・スレーブ・ライブラリなどのクラス・データベースの特性も提供します.Redisはキャッシュシステムとデータベースのいくつかの特性を兼ね備えているため、豊富な応用シーンを持っていると言える.この論文ではSpring BootにおけるRedisの2つの典型的な応用シーンを紹介する.使用方法
1、依存パッケージの導入
org.springframework.bootspring-boot-starter-data-redisorg.apache.commonscommons-pool2
Spring Bootは、Redisに統合されたコンポーネントパッケージを提供します.spring-boot-starter-data-redis、spring-boot-starter-data-redisはspring-data-redisおよびlettuceに依存します.Spring Boot 1.0のデフォルトはJedisクライアントで、2.0はLettuceに置き換えられますが、Spring Boot 1.5から使用する場合は.Xを切り替えると、spring-boot-starter-data-redisが私たちの違いを隔離しているため、ほとんど違いを感じません.
Lettuceは、優れたnetty NIOフレームワークを利用して複数の接続を効率的に管理する、同じRedisConnectionを共有できる、伸縮性のあるスレッドで安全なRedisクライアントです.
2、プロファイルの追加
# Redis ( 0)
spring.redis.database=0
# Redis
spring.redis.host=localhost
# Redis
spring.redis.port=6379
# Redis ( )
spring.redis.password=
# ( ) 8
spring.redis.lettuce.pool.max-active=8
# ( ) -1
spring.redis.lettuce.pool.max-wait=-1
# 8
spring.redis.lettuce.pool.max-idle=8
# 0
spring.redis.lettuce.pool.min-idle=0
3、cacheの構成クラスを追加する
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
}
注記:@EnableCachingを使用してキャッシュを開きます.
4、よし、これからはそのまま使える
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestRedis {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() throws Exception {
stringRedisTemplate.opsForValue().set("aaa", "111");
Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
}
@Test
public void testObj() throws Exception {
User user=new User("[email protected]", "aa", "aa123456", "aa","123");
ValueOperations operations=redisTemplate.opsForValue();
operations.set("com.neox", user);
operations.set("com.neo.f", user,1, TimeUnit.SECONDS);
Thread.sleep(1000);
//redisTemplate.delete("com.neo.f");
boolean exists=redisTemplate.hasKey("com.neo.f");
if(exists){
System.out.println("exists is true");
}else{
System.out.println("exists is false");
}
// Assert.assertEquals("aa", operations.get("com.neo.f").getUserName());
}
}
以上はすべて手動で使用する方法で、どのようにデータベースを検索する時に自動的にキャッシュを使用しますか?
5、自動的に方法によってキャッシュを生成する
@RestController
public class UserController {
@RequestMapping("/getUser")
@Cacheable(value="user-key")
public User getUser() {
User user=new User("[email protected]", "aa", "aa123456", "aa","123");
System.out.println(" “ ” ");
return user;
}
}
valueの値はRedisにキャッシュされたkey共有セッションです
分散システムでは、Session共有には多くのソリューションがあり、キャッシュに管理されるのが最も一般的なソリューションの1つであるべきであり、Spring Sessionの公式説明
Spring Session provides an API and implementations for managing a user’s session information.
Spring Sessionは、サーブレットHttpSessionを作成および管理する一連のスキームを提供します.Spring SessionはクラスタSession(Clustered Sessions)機能を提供し、デフォルトでは外部のRedisを使用してSessionデータを格納し、Session共有の問題を解決します.使用方法
1、導入依存
org.springframework.session
spring-session-data-redis
2、Session配置:
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30)
public class SessionConfig {
}
maxInactiveIntervalInSeconds:セッションの有効期限を設定し、Redisセッションを使用した後、元Spring Bootのserver.session.timeoutプロパティは有効になりません.
では、これで構成が整いました.テストしてみましょう.
3、テスト
テストメソッドの追加sessionidの取得
@RequestMapping("/uid")
String uid(HttpSession session) {
UUID uid = (UUID) session.getAttribute("uid");
if (uid == null) {
uid = UUID.randomUUID();
}
session.setAttribute("uid", uid);
return session.getId();
}
Redis keys 'sessions'
t
このうち147276480000は失効時間であり、この時間後にSessionが失効することを意味し、db 031986-8 ecc-48 d 6-b 471-b 137 a 3 ed 6 bc 4はsessionIdであり、登録http://localhost:8080/uid発見が一致したのは、SessionがRedisで有効な管理を行っていることを示しています.Sessionを2台または複数台で共有する方法
実は上の手順で別の項目で再構成し、起動すると自動的にセッション共有が行われます.