带有自动增量键的Spring Data + Redis

时间:2017-04-11 09:25:37

标签: redis spring-data

我正在尝试使用Redis进行Spring数据CRUD操作,但主要是我需要在Redis中存储自动增量键。

我已尝试使用Redis对SpringData进行简单的CRUD操作,但没有自动增量键功能。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您使用的是spring数据redis存储库,则可以使用@RedisHash注释该字段,该字段需要自动生成值,并在其类上添加@RedisHash("persons") public class Person { @Id String id; String firstname; String lastname; Address address; } 注释。

public interface PersonRepository extends CrudRepository<Person, String> {

}

@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;
  }
}

现在实际上有一个负责存储和检索的组件,您需要定义一个存储库接口。

@Autowired PersonRepository repo;

public void basicCrudOperations() {

  Person rand = new Person("rand", "al'thor");
  rand.setAddress(new Address("emond's field", "andor"));

  repo.save(rand);               //1                          

  repo.findOne(rand.getId());    //2                          

  repo.count();                  //3                          

  repo.delete(rand);             //4                          
}

鉴于上面的设置,您可以继续并将PersonRepository注入您的组件。

a
  1. 如果当前值为null,则生成新的id或重新使用已设置的id值,并在Redis Hash中使用带有模式键空间的键存储Person类型的属性:在这种情况下为id,例如。人数:5d67b7e1-8640-4475-BEEB-c666fab4c0e5
  2. 使用提供的id检索存储在keyspace中的对象:id。
  3. 计算由@RedisHash on Person定义的密钥空间人员中可用的实体总数。
  4. 从Redis中删除给定对象的密钥。
  5. 参考:http://docs.spring.io/spring-data/redis/docs/current/reference/html/