sql >> データベース >  >> NoSQL >> Redis

Spring BootAppRedisとSpringBootSessionGlobalRedisを分離する方法

    実際、デフォルトでは、spring-sessionとspring-cacheの両方が実際にはRedisConnectionFactoryを使用したspring-bootによって構成されています。 connectionFactoryという名前のBean 。これを行う2つの方法。

    1. spring-sessionを作成します 別のconnectionFactoryを使用するには Beanインスタンスを作成し、spring-cacheをそのままにして、デフォルトのconnectionFactoryを使用します。 。以下はサンプルソリューションです:

      @Configuration
      public class RedisHttpSessionConfig {
      
          @Bean
          StringRedisSerializer stringRedisSerializer() {
              return new StringRedisSerializer();
          }
      
          @Bean
          RedisConnectionFactory redisHttpSessionConnectionFactory() {
              RedisConnectionFactory redisHttpSessionConnectionFactory = null;
              // ... add your codes here
              return redisHttpSessionConnectionFactory;
          }
      
          @Bean
          public RedisTemplate<Object, Object> sessionRedisTemplate(
                  RedisConnectionFactory redisHttpSessionConnectionFactory) {
              RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
              template.setKeySerializer(new StringRedisSerializer());
              template.setHashKeySerializer(new StringRedisSerializer());
              template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
              template.setDefaultSerializer(GenericJackson2JsonRedisSerializer());
              template.setConnectionFactory(redisHttpSessionConnectionFactory);
              return template;
          }
      }
      
    2. spring-cacheを作成します 別のconnectionFactoryを使用するには Beanインスタンスを作成し、spring-sessionを終了して、デフォルトのconnectionFactoryを使用します。 。以下はサンプルソリューションです:

      @Configuration
      public class RedisCacheConfig {
      
          @Bean
          StringRedisSerializer stringRedisSerializer() {
              return new StringRedisSerializer();
          }
      
          @Bean
          RedisConnectionFactory redisCacheConnectionFactory() {
               RedisConnectionFactory redisCacheConnectionFactory = null;
               // ... add your codes here
               return redisCacheConnectionFactory;
          }
      
          @Bean
          RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisCacheConnectionFactory) {
              RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
              redisTemplate.setConnectionFactory(redisCacheConnectionFactory);
              redisTemplate.setKeySerializer(this.stringRedisSerializer());
              redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
              return redisTemplate;
          }
      
          @Bean(name = "stringRedisTemplate")
          public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisCacheConnectionFactory) throws UnknownHostException {
              StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
              stringRedisTemplate.setConnectionFactory(redisCacheConnectionFactory);
              stringRedisTemplate.setKeySerializer(this.stringRedisSerializer());
              stringRedisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
              return stringRedisTemplate;
          }
      
          @Bean
          CacheManager cacheManager(RedisTemplate redisTemplate) {
              RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
              cacheManager.setDefaultExpiration(600l);
              cacheManager.setUsePrefix(true);
              return cacheManager;
          }
      }
      


    1. 集約のための構造の生成

    2. redis scanは空の結果を返しますが、ゼロ以外のカーソルを返します

    3. 非常に大量のデータ用のどのNoSQLデータベース

    4. Laravel5.5redisキューが遅すぎます