Spring Data Redis(Redis Repositories)

来源:互联网 发布:模拟电脑桌面的软件 编辑:程序博客网 时间:2024/05/22 01:34

Redis Repositories

使用仓储可以实现Redis Hashs与领域对象无缝的转换和存储,应用自定义的映射策略和使用二级索引。

Redis的仓储需要至少Redis 2.8.0版本。

1. Usage

利用仓储的支持可以很轻松的访问存储在Redis 里的领域实体。

Example 5. Sample Person Entity

@RedisHash("persons")public class Person {  @Id String id;  String firstname;  String lastname;  Address address;}

这个是一个相当简单的领域对象。注意,它有一个注释为org.springframework.data.annotation.Id 的属性id ,其类型注释为@RedisHash 。这个两个注释构成了持久化该hash 的真正的key。

有@Id 注解的属性和被命名为id 的属性会被当作标识属性。有注释的属性比其他的更受欢迎。

Example 6. Basic Repository Interface To Persist Person Entities

public interface PersonRepository extends CrudRepository<Person, String> {}

当仓储继承CrudRepository 后就具有了基础的CRUD 和查询操作的功能。要把它们结合在一起还需要Spring 的配置。

Example 7. JavaConfig for Redis Repositories

@Configuration@EnableRedisRepositoriespublic class ApplicationConfig {  @Bean  public RedisConnectionFactory connectionFactory() {    return new JedisConnectionFactory();  }  @Bean  public RedisTemplate<?, ?> redisTemplate() {    RedisTemplate<byte[], byte[]> template = new RedisTemplate<byte[], byte[]>();    return template;  }}

像上面那样创建后,我们就可以接着做并将PersonRepository 注入到我们的组件中。

Example 8. Access to Person Entities

@Autowired PersonRepository repo;public void basicCrudOperations() {  Person rand = new Person("rand", "al'thor");  rand.setAddress(new Address("emond's field", "andor"));  repo.save(rand);                                           repo.findOne(rand.getId());                                repo.count();                                              repo.delete(rand);                                       }
将Person 的所有属性存储到Redis Hash中,如果id 为null 则生成一个新的或重用一个已经存在的,存储的key 的模式为keyspace:id ,如 persons:5d67b7e1-8640-4475-beeb-c666fab4c0e5使用提供的id 可以检索存储为keyspace:id 对应的object可以使用@RedisHash 提供的keyspace(如persons)来统计实体的总数利用key 可以删除Redis 中存储的对应的对象。