Весна в чтении действия примечаний (X) с помощью Redis NoSQL базы данных

подключение данных доступа Использование Redis необходимо для Redis

1, соединен с Redis

Предоставление пружинных-данные Redis-2.1.0.RELEASE пакета подключения фабрика два Redis, для создания подключения сервера базы данных Redis:

JedisConnectionFactory 
LettuceConnectionFactory

~~ специфические различия неясны, использование JedisConnectionFactory

RedisConnectionFactory конфигурации

    @Bean
     общественного RedisConnectionFactory завод (RedisStandaloneConfiguration redisStandaloneConfiguration) {
         возвращение  нового JedisConnectionFactory (redisStandaloneConfiguration); 
    } 

    @Bean 
    общественного RedisStandaloneConfiguration redisStandaloneConfiguration) {( 
        конфигурация RedisStandaloneConfiguration = новый RedisStandaloneConfiguration (); 
        configuration.setHostName ( "локальный" );
        // configuration.setPassword ( ""); 
        configuration.setPort (6379 );
        вернуть конфигурацию; 
    }

2, 使用 RedisTemplate, StringRedisTemplate

1, на основе определенного типа RedisTemplate

Класс Student субъект определяет

общественный  класс Student { 

        общественный Student ( ИНТ идентификатор, имя String) {
             это .id = идентификатор;
            это .name = имя; 
        } 

        Общественности Student () { 
        } 

        частный  Int идентификатор; 

        частное имя строки; 

        общественного  ИНТ GetId () {
             возвращение идентификатор; 
        } 

        Общественного  недействительными SETID ( INT ID) {
             это .id = ID; 
        } 

        Публичная строка GetName () {
            вернуть имя; 
        } 

        Общественная  пустота SetName (имя String) {
             это .name = имя; 
        } 

        @Override 
        общественные  булевы Equals (Object о) {
             если ( это == о) вернуться  верно ;
            если (о == NULL || GetClass () = o.getClass) (!) вернуться  ложным ; 
            Студент = (Student) о;
            Возвращение идентификатор == student.id && 
                    name.equals (student.name); 
        }

        @Override 
        общественного  ИНТ хэш - код () {
             вернуть Objects.hash (идентификатор, имя); 
        } 

        @Override 
        общественности Строка ToString () {
             возвращение  супер .ToString (); 
        } 
    }
Просмотр кода

配置 RedisTemplate <String, Student>

   @Bean
     общественного RedisTemplate <String, Student> studentRedisTemplate (RedisConnectionFactory сравни) { 
        RedisTemplate <String, Student> Redis = новый RedisTemplate <> (); 
        redis.setConnectionFactory (см); 
        redis.setKeySerializer ( новый StringRedisSerializer ()); 
        redis.setValueSerializer ( новый Jackson2JsonRedisSerializer <> (Student. класс ));
        вернуться Redis; 
    }

Инъекции RedisTemplate <String, Student> и испытания

@Autowired
     частный RedisTemplate <String, Student> studentTemplate; 

    @Test 
    общественности  недействительным testStudentTemplate () { 
        Key String = "студент" ; 
        studentTemplate.delete (ключ); 

        Студент = новый Студент (0, "Аа" ); 
        studentTemplate.opsForSet () добавить (ключ, студент). 

        Set <Student> набор = studentTemplate.opsForSet () членов (ключ). 

        Assert.assertTrue (комплект ! = NULL && set.contains (студент)); 
    }

2, на основе типа объекта RedisTemplate

配置 RedisTemplate <String, Object>

    @Bean
     общественного RedisTemplate <String, Object> redisTemplate (RedisConnectionFactory завод) { 
        RedisTemplate <String, Object> Шаблон = новый RedisTemplate <String, Object> (); 
        template.setConnectionFactory (завод); 
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = новый Jackson2JsonRedisSerializer <> (Объект. Класс ); 
        ObjectMapper ом = новый ObjectMapper (); 
        om.setVisibility (PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); 
        om.enableDefaultTyping (ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper (ом);
        StringRedisSerializer StringRedisSerializer = новый новый StringRedisSerializer ();
         // ключ с использованием сериализации Строка 
        template.setKeySerializer (stringRedisSerializer);
         // ключ хеш также используется строка сериализовать манер 
        template.setHashKeySerializer (stringRedisSerializer);
         // значение , используя сериализацию Джексон 
        template.setValueSerializer (jackson2JsonRedisSerializer);
         // хэш - значение использования сериализации Джексона 
        template.setHashValueSerializer (jackson2JsonRedisSerializer); 
        template.afterPropertiesSet (); 

        возврат шаблона; 
    }

Инъекции RedisTemplate <String, Object> и тестирование

@Autowired
     личное RedisTemplate <String, Object> objectRedisTemplate; 

    @Test 
    общественности  недействительным testObjectTemplate () { 
        Key String = "объект" ; 
        objectRedisTemplate.delete (ключ); 

        // 存取单个实例 
        Студент = новый студент (1, "Bb" ); 
        objectRedisTemplate.opsForValue () набор (ключ, студент). 
        Результат Object = objectRedisTemplate.opsForValue () получить (ключ). 
        Assert.assertEquals (студент, результат); 

        // 存取集合类 
        List <Student> Список = новый ArrayList <> ();
        для ( междунар я = 0; я <3; я ++ ) { 
            list.add ( новый студент (я, "имя" + я)); 
        } 

        ObjectRedisTemplate.delete ( "список" ); 
        . objectRedisTemplate.opsForList () leftPushAll ( "список" , список); 
        Список <Объект> resultList = objectRedisTemplate.opsForList () Диапазон ( "список", 0, -1).  // 取出来的数据外面包了一层Список 
        если (resultList! = NULL && ((Список) resultList) .size ()> 0 && resultList.get (0) InstanceOf список) { 
            resultList = (Список) resultList.get (0 );
            Assert.assertEquals (список, resultList); 
        } Иначе { 
            Assert.fail (); 
        } 
    }

3, StringRedisTemplate

StringRedisTemplate 配置

    @Bean
     общественного StringRedisTemplate stringRedisTemplate (RedisConnectionFactory ср) { 
        StringRedisTemplate stringRedisTemplate = новый StringRedisTemplate (); 
        stringRedisTemplate.setConnectionFactory (см); 
        stringRedisTemplate.setKeySerializer ( новый StringRedisSerializer ()); 
        stringRedisTemplate.setValueSerializer ( новый Jackson2JsonRedisSerializer <> (Object. класс ));
        вернуться stringRedisTemplate; 
    }

И испытать инъекции StringRedisTemplate

@Test
     общественности  недействительным testStringRedisTemplate () бросает исключение { 

        Строка ключа = "stringRedisTemplate" ; 
        stringRedisTemplate.delete (ключ); 

        Студент = новый Студент (1, "Bb" ); 

        ObjectMapper ObjectMapper = новый ObjectMapper (); 

        Строка studentString = objectMapper.writeValueAsString (студент);
        // 写入,读取单个值
        . StringRedisTemplate.opsForList () leftPush (ключ, studentString); 
        Результат Строка = stringRedisTemplate.opsForList () leftPop (ключ).
        Assert.assertEquals (результат, studentString); 

        Список <Student> studentList = новый ArrayList <> (); 
        Карта <String, Student> studentMap = новый HashMap <> ();
        для ( междунар я = 0; я <5; я ++ ) { 
            Student темп = новый студент (я, "имя" + я); 
            studentList.add (температура); 
            studentMap.put ( "" + я, темп); 
        } 

        // 存取ArrayList <Student> 
        stringRedisTemplate.delete ( "studentList" );
        . stringRedisTemplate.opsForValue () множество ( "studentList" , objectMapper.writeValueAsString (studentList)); 
        Строка studentListString = stringRedisTemplate.opsForValue () получить ( "studentList". ); 
        JavaType javaType1 = objectMapper.getTypeFactory () constructParametricType (ArrayList.. Класс , студент. Класс ); 
        Список <Student> studentList1 = objectMapper.readValue (studentListString, javaType1); 

        Assert.assertEquals (studentList, studentList1); 

        // 存取Карта 
        stringRedisTemplate.delete ( "studentMap" ); 
        stringRedisTemplate.opsForValue (). комплект ("studentMap" , objectMapper.writeValueAsString (studentMap)); 
        JavaType javaType2 = objectMapper.getTypeFactory () constructParametricType (HashMap.. Класс , String. Класс , студент. Класс ); 
        Карта <String, Student> resultMap = objectMapper.readValue (stringRedisTemplate.opsForValue () получить ( "studentMap". ), JavaType2); 

        Assert.assertEquals (studentMap.entrySet (), resultMap.entrySet ()); 
    }

Скачать проект

рекомендация

отwww.cnblogs.com/wushengwuxi/p/12194868.html