Skip to content

Latest commit

 

History

History
59 lines (47 loc) · 1.85 KB

SpringDataKeyValueRedis.md

File metadata and controls

59 lines (47 loc) · 1.85 KB

Spring Data Key-Value

Это подпроект Spring Data, абстракция для работ с Key-Value БД

  • содержит дефолтную реализацию на базе ConcurrentHashMap
  • можно использовать и др. реализации, например WeakMap

Есть более специфичные модули типа spring-data-redis, которые предоставляют методы Templat-a (RedisTemplate)

Зависимость для обобщенной key-value

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-keyvalue</artifactId>
    <version>3.3.2</version>
    <scope>test</scope>
</dependency>

Зависимость для Redis

@KeySpace - это collection в MongoDb/ElasticSearch, таблицы в JPA, cores в Solr

@KeySpace("employees") //
public class Employee {
    @Id
    private Integer id;
    private String name;
    private String department;
    private String salary;
}

@EnableMapRepositories - чтобы сказать спрингу о работе с Key-Value репозиториями. Автоматом создаст бины Templeat-а

@EnableMapRepositories(mapType = WeakHashMap.class) //вешать над главным классом. По умолчанию - ConcurrentHashMap
public class SpringApplication {}

Template

private final KeyValueOperations keyValueTemplate; //аналог EntityManager-a, только для key-value

Репозиторий

public interface PersonRepository extends KeyValueRepository<Person, Integer>

Query

KeyValueQuery<String> query = new KeyValueQuery<>();
query.setSort(new Sort(Sort.Direction.DESC, "salary"));
Iterable<Employee> employees = keyValueTemplate.find(query, Employee.class);