0

Spring キャッシュの実装として redis を使用しています。そして、公式ドキュメントには、キャッシュマネージャーを次のように構成する必要があると書かれています。

<!-- Old version -->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
        c:template-ref="redisTemplate">

また、jedis のバージョン = 2.0.0、spring-data-redis のバージョン = 1.0.2.RELEASE の場合に正常に動作します。

しかし、より最近のバージョン (例: jedis = 2.5.2 および spring-data-redis = 1.3.4.RELEASE) では、上記の構成は機能しません。代わりに、「loadCaches は空のコレクションを返してはならない」という例外をスローします。それから私はそれを参照して再度ググったところ、構成ファイルは次のようになりました。

<!-- New Version -->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
        c:template-ref="redisTemplate">
    <property name="cacheNames">
        <map>
            <bean id="someid" class="someclass" p:name="somename"/>
        </map>
    </property>
</bean>

今では、空のコレクションについては文句を言いませんが、初期化については別のことです。

したがって、ここに別の 2 つの質問があります。

  1. cacheNames プロパティ内で、他のユーザーが "list"、"set"、および "map" を使用していることがわかります。違いは何ですか?
  2. 内部でBeanを構成する方法は?

私はこの Bean のセットアップに数日間苦労しています。前もって感謝します

4

2 に答える 2

0

org.springframework.cache.annotation.EnableCachingヒントとして、注釈を参照してください。

内部では、CacheManagerインターフェースとその仕組みについて説明しています。

簡単な「準備」として、使用するキャッシュの名前を指定する必要があります (@CacheConfig(cacheNames='...')またはを使用する場合など) @Cacheable(value = '...')。アイデアは、キャッシュされる関連する「もの」の論理グループを作成することです。 、例: 本、車、ローンなど

BookService では、次のようなものを使用します@CacheConfig(cacheNames='Books')

それが役立つことを願っています!

于 2015-01-30T07:17:04.527 に答える
0

spring-data-redis で Jedis を使用すると、同様の問題に直面しました。私が得た発見の 1 つは、spring-data-redis がJedis のバージョンに非常に特化していることです。私の場合、Spring-data-redis 1.5.0.RELEASEはJedis 2.6.2と互換性があります。

あなたの場合、以下のリンクを参照して、コンパイル依存関係セクションを探してください。 1.3.4.RELEASEがJedis 2.4.1と互換性があることがわかります。POMファイルのJedisバージョンを変更すると、問題が解決すると思います。

http://mvnrepository.com/artifact/org.springframework.data/spring-data-redis/1.3.4.RELEASE

于 2015-06-26T09:02:30.770 に答える