SpringBoot(九):redisキャッシュデータとsession
7034 ワード
著作権声明
本作は知識共有署名4.0国際ライセンス契約を使用して許可されている.本文の作者:控えめなパンダの文章のリンク:https://aodeng.cc/archives/springbootjiu転載声明:自由転載-非商用-非派生-署名を保持し、非商業転載は著者と出典を明記してください.商業転載は著者本人に連絡してください.
単純な広告
個人ブログ:https://aodeng.cc微信公众号:低调レッサーパンダqq交流群:756796932
コンフィギュレーション
pom.xml
application.yml
RedisConfig.java
SessionConfig.java
キャッシュの使用
セッション共有demo
redisクライアントセッションの表示
ソースアドレス
https://github.com/java-aodeng/hope
本作は知識共有署名4.0国際ライセンス契約を使用して許可されている.本文の作者:控えめなパンダの文章のリンク:https://aodeng.cc/archives/springbootjiu転載声明:自由転載-非商用-非派生-署名を保持し、非商業転載は著者と出典を明記してください.商業転載は著者本人に連絡してください.
単純な広告
個人ブログ:https://aodeng.cc微信公众号:低调レッサーパンダqq交流群:756796932
コンフィギュレーション
pom.xml
org.springframework.boot
spring-boot-starter-redis
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.session
spring-session-data-redis
application.yml
# REDIS (RedisProperties)
# Redis ( 0)
spring:
redis:
database: 0
# Redis
host: localhost
# Redis
port: 6379
# Redis ( )
password:
# ( )
#timeout: 0
# ( )
pool:
max-active: 8
# ( )
max-wait: -1
#
max-idle: 8
#
min-idle: 0
RedisConfig.java
@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 object : params) {
sb.append(object.toString());
}
return sb.toString();
}
};
}
/***
* springboot 2.0
* @param connectionFactory
* @return
*/
@Bean
CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
//user
RedisCacheConfiguration userCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(30)).disableCachingNullValues().prefixKeysWith("role");
//product
RedisCacheConfiguration productCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues().prefixKeysWith("test");
Map redisCacheConfigurationMap = new HashMap<>();
redisCacheConfigurationMap.put("role", userCacheConfiguration);
redisCacheConfigurationMap.put("test", productCacheConfiguration);
// RedisCacheWriter
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);
// CacheManager JdkSerializationRedisSerializer, RedisCacheConfiguration StringRedisSerializer key,JdkSerializationRedisSerializer value,
//ClassLoader loader = this.getClass().getClassLoader();
//JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
//RedisSerializationContext.SerializationPair
SessionConfig.java
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1)
public class SessionConfig {
}
キャッシュの使用
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestRedisTest {
private static final Logger log= LoggerFactory.getLogger(TestRedisTest.class);
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Test//StringRedisTemplate StringRedisSerializer
public void test1() throws Exception{
stringRedisTemplate.opsForValue().set("name","admin");
Assert.assertEquals("admin",stringRedisTemplate.opsForValue().get("name"));
log.info("[redis ]-[{}]",stringRedisTemplate.opsForValue().get("name"));
}
@Test//RedisTemplate JdkSerializationRedisSerializer
public void test2() throws Exception{
SysRole sysRole=new SysRole();
sysRole.setRoleId(1);
sysRole.setRole("1001");
sysRole.setRole(" ");
sysRole.setDescription(" ");
ValueOperations valueOperations=redisTemplate.opsForValue();
valueOperations.set("sysRole1",sysRole);
valueOperations.set("sysRole2",sysRole,2, TimeUnit.SECONDS);
Thread.sleep(1000);
log.info("[sysRole2]-[{}]",valueOperations.get("sysRole2"));
boolean exists=redisTemplate.hasKey("sysRole2");
if(exists){
System.out.println("true");
}else {
System.out.println("false");
}
Assert.assertEquals(" ",valueOperations.get("sysRole1").getRole());
}
}
セッション共有demo
@RestController
public class TestRedis {
@RequestMapping("/test")
String test(HttpSession httpSession){
UUID uuid=(UUID) httpSession.getAttribute("uuid");
if(null==uuid){
uuid=UUID.randomUUID();
}
httpSession.setAttribute("uuid",uuid);
return httpSession.getId();
}
}
redisクライアントセッションの表示
keys '*sessions*'
ソースアドレス
https://github.com/java-aodeng/hope