Spring Data Redis(Redis Repositories)

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
@EnableRedisRepositories
public 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 中存储的对应的对象。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值