In der Kolumne Redis-Tutorial wird Ihnen der von Spring Redis Annotations implementierte Caching-Mechanismus vorgestellt. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
1. XML-Konfiguration
rrree2. Detaillierte Erläuterung der Cache-Anmerkungen @Cacheable, @CachePut
1. Detaillierte Erläuterung der Verwendung von @Cacheable
1. Wird für Methoden oder Klassen verwendet.
2. Was ist der Unterschied zwischen diesen beiden Verwendungen?
Wird für eine Methode verwendet, um anzuzeigen: Der Rückgabewert dieser Methode wird zwischengespeichert.
Wird für eine Klasse verwendet, um anzuzeigen: Alle Methoden der Klasse unterstützen diese Annotation.
3 Was ist das Ergebnis nach der Verwendung? Wenn diese Methode das nächste Mal mit derselben Methode und denselben Parametern aufgerufen wird, wird der Wert direkt aus dem Cache abgerufen, ohne dass die Methode erneut ausgeführt werden muss.
4. Wie wird der Rückgabewert im Cache gespeichert? Es wird in Form von Schlüssel-Wert-Paaren im Cache gespeichert. Der Schlüssel wird durch zwei Strategien generiert: Standardstrategie und benutzerdefinierte Strategie. 5. Wie verwende ich die Standardstrategie und die Standardstrategie?
Standardstrategie: Doppeltes „::“-Spleißen nach dem Wertwert, formale Parameterliste. Wenn der formale Parameter ein Objekt ist, verwenden Sie das JSON-Format:
<bean id="poolConfigTax" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis_tax.maxIdle}" /> <property name="minIdle" value="${redis_tax.minIdle}" /> <property name="maxTotal" value="${redis_tax.maxTotal}" /> <property name="testOnBorrow" value="${redis_tax.testOnBorrow}" /> </bean> <!-- Tax redis 数据库 --> <bean id="connectionFactoryTax" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis_tax.host}" p:port="${redis_tax.port}" p:password="${redis_tax.pass}" p:pool-config-ref="poolConfigTax" p:database="0"/> <!--redis操作模版,使用该对象可以操作redis --> <bean id="redisTemplateTax" class="org.springframework.data.redis.core.RedisTemplate" > <property name="connectionFactory" ref="connectionFactoryTax" /> <!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!! --> <property name="keySerializer" > <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer" > <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" /> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> <property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/> </property> <!--开启事务 --> <property name="enableTransactionSupport" value="false"></property> </bean> <!-- 配置RedisCacheManager --> <bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"> <constructor-arg name="redisOperations" ref="redisTemplateTax" /> </bean> <cache:annotation-driven cache-manager="redisCacheManager"/>
@CacheConfig(cacheNames="enterprise")//<!-- 声明缓存使用的缓存名称 --> public interface EnterpriseRepo extends JpaRepository<Enterprise, Integer>,JpaSpecificationExecutor<Enterprise>{ @Cacheable(value="cash1") Enterprise findByid(Integer id); @CachePut(value="cash1") Enterprise save(Enterprise enterprise); }
@Cacheable(value="users", key="#id") public User find(Integer id) { return null; } @Cacheable(value="users", key="#p0") public User find(Integer id) { return null; } @Cacheable(value="users", key="#user.id") public User find(User user) { return null; } @Cacheable(value="users", key="#p0.id") public User find(User user) { return null; }
@Cacheable(value={"users", "xxx"}, key="caches[1].name") public User find(User user) { return null; }
Wird im Allgemeinen in Speicher- und Aktualisierungsmethoden verwendet.
@Cacheable(value={"users"}, key="#user.id", condition="#user.id%2==0") public User find(User user) { System.out.println("find user by user " + user); return user; }
1. allEntries-Attribut
allEntries ist ein boolescher Typ, der angibt, ob alle Elemente im Cache gelöscht werden müssen. Der Standardwert ist false, was bedeutet, dass er nicht benötigt wird. Wenn allEntries als true angegeben ist, ignoriert Spring Cache den angegebenen Schlüssel. Manchmal müssen wir alle Elemente auf einmal aus dem Cache löschen, was effizienter ist, als Elemente einzeln zu löschen.
public User find(Integer id) { return null; }
Der Löschvorgang wird standardmäßig ausgelöst, nachdem die entsprechende Methode erfolgreich ausgeführt wurde. Das heißt, der Löschvorgang wird nicht ausgelöst, wenn die Methode aufgrund einer Ausnahme nicht erfolgreich zurückgegeben werden kann. Sie können beforeInvocation verwenden, um den Zeitpunkt zu ändern, zu dem der Löschvorgang ausgelöst wird. Wenn wir den Wert dieser Eigenschaft auf „true“ festlegen, löscht Spring das angegebene Element im Cache, bevor diese Methode aufgerufen wird.
@CacheEvict(value="users", allEntries=true) public void delete(Integer id) { System.out.println("delete user by id: " + id); }
Das obige ist der detaillierte Inhalt vonInformationen zur Spring Redis-Annotation zur Implementierung des Caching-Mechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!