簡體   English   中英

如何為非 spring 啟動 java 應用程序設置 redis 緩存前綴鍵配置1823E6CC71

[英]How to set redis cache prefix key for non spring boot java application using xml configuration

我想為我的應用程序設置一個自定義緩存鍵前綴,它為我的 RedisCacheManager 使用 xml 配置,我的目標是,如果緩存鍵是學生詳細信息,則緩存鍵應該是 test:: student-detail 或 prod:: student -detail,我已經將 usePrefix 設置為 true,但是我找不到定義實際鍵值的方法。 下面是我的 cacheManager 配置的摘錄。

<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
      c:redisOperations-ref="redisTemplate"
      c:defaultExpiration=3600
      c:usePrefix="true">
</bean>

對於信息,我知道在 spring 啟動就像在應用程序屬性中設置一個屬性一樣簡單:

spring.cache.redis.key-prefix=some::
spring.cache.redis.use-key-prefix=true

只是為了說明為什么我要針對非 spring 啟動 java 應用程序進行精確定位。

解決方案是通過實現 RedisCachePrefix 創建您的自定義 redis 緩存前綴。參見下面的代碼

package com.cache.custom.utils;

import com.morgan.design.properties.ReloadableProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.cache.RedisCachePrefix;
import org.springframework.data.redis.serializer.StringRedisSerializer;

public class MyRedisCachePrefix implements RedisCachePrefix {
/** The Prefix */
@ReloadableProperty("prefixString")
private String personalPrefixString;

/** The key string redis serializer */
@Autowired
String StringRedisSerializer stringRedisSerializer;

/** The delimiter */
private final String delimiter = "::";

@Override
public byte[] prefix(String cacheName) {
  return stringRedisSerializer.serialize(personalPrefixString.concat(":").concat(cacheName).concat(this.delimiter));
}
}

然后在 xml 上:

<bean id=stringRedisSerializer"
      class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
<bean id="redisCachePrefix"
      class="com.cache.custom.utils.MyRedisCachePrefix"/>
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
      c:redisOperations-ref="redisTemplate"
      p:defaultExpiration=3600
      p:usePrefix="true"
      p:cachePrefix-ref="redisCachePrefix"
>
</bean>

注意:personalPrefixString 值將從前綴字符串的屬性文件條目中獲取。 如果 prefixString 值是 testing 並且 cacheName 是 student-details-cache 那么你的緩存鍵的前綴是: testing:student-details-cache::

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM