无法使用注解@RedisHash定义自定义Redis哈希

时间:2019-05-17 20:04:09

标签: spring-boot redis

尝试使Redis Entries Environment特定于dev,qa和uat。这样一个通用的Redis Cache环境可以在各种环境中使用。

当前缓存键条目如下: empCache :101_Abcd

想要如下所示的键: empCache:dev :101_Abcd, empCache:uat :101_Abcd

  

要求:

     
      
  1. CRUD操作。
  2.   
  3. 如果清除/更新了Dev缓存,则不会影响qa和uat等其他环境的条目。
  4.   

当前代码

EmpBean 
@RedisHash("empCache")
//Want to set RedisHash key as "empCache" + Spring Profile (like dev,qa,uat)
public class EmpBean implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    String empCacheKey;

    /*EmpId*/
    private int empId;

    /*EmpName*/
    private String empName;

}


Repository
---------------------------
@Repository
public interface EmpRepo extends CrudRepository<EmpBean, String> {}

如果我尝试添加引用以从应用程序属性中读取Spring Boot配置文件,则会出现编译错误。

The value for annotation attribute RedisHash.value must be a constant expression

1 个答案:

答案 0 :(得分:0)

最终使用jedis实现相同效果-

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <type>jar</type>
</dependency>

代码示例如下。

try (Jedis jedisRef = new Jedis(env.getProperty("spring.redis.host"))) {
            String empKey = "empCache" + "::" + dev + "::" + "customKeyName";
            jedisRef.setex(empKey, expiry,
                    stringToSave);
}