class DefaultRedisCacheWriter
extends java.lang.Object
implements org.springframework.data.redis.cache.RedisCacheWriter
RedisCacheWriter implementation capable of reading/writing binary data from/to
Redis in standalone and cluster environments. Works upon a given
RedisConnectionFactory to obtain the actual RedisConnection. DefaultRedisCacheWriter can be used in
locking or
non-locking
mode. While non-locking aims for maximum performance it may result in
overlapping, non atomic, command execution for operations spanning multiple Redis
interactions like putIfAbsent. The locking counterpart prevents
command overlap by setting an explicit lock key and checking against presence of this
key which leads to additional requests and potential command wait times.| 限定符和类型 | 字段和说明 |
|---|---|
private org.springframework.data.redis.connection.RedisConnectionFactory |
connectionFactory |
private java.time.Duration |
sleepTime |
| 限定符 | 构造器和说明 |
|---|---|
(专用程序包) |
DefaultRedisCacheWriter(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory) |
private |
DefaultRedisCacheWriter(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory,
java.time.Duration sleepTime) |
| 限定符和类型 | 方法和说明 |
|---|---|
private void |
checkAndPotentiallyWaitUntilUnlocked(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection) |
void |
clean(java.lang.String name,
byte[] pattern) |
void |
clearStatistics(java.lang.String s) |
private static byte[] |
createCacheLockKey(java.lang.String name) |
(专用程序包) boolean |
doCheckLock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection) |
private java.lang.Boolean |
doLock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection) |
private java.lang.Long |
doUnlock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection) |
private <T> T |
execute(java.lang.String name,
java.util.function.Function<org.springframework.data.redis.connection.RedisConnection,T> callback) |
private void |
executeLockFree(java.util.function.Consumer<org.springframework.data.redis.connection.RedisConnection> callback) |
byte[] |
get(java.lang.String name,
byte[] key) |
org.springframework.data.redis.cache.CacheStatistics |
getCacheStatistics(java.lang.String s) |
private boolean |
isLockingCacheWriter() |
(专用程序包) void |
lock(java.lang.String name)
Explicitly set a write lock on a cache.
|
void |
put(java.lang.String name,
byte[] key,
byte[] value,
java.time.Duration ttl) |
byte[] |
putIfAbsent(java.lang.String name,
byte[] key,
byte[] value,
java.time.Duration ttl) |
void |
remove(java.lang.String name,
byte[] key)
删除,原来是删除指定的键,目前修改为既可以删除指定键的数据,也是可以删除某个前缀开始的所有数据
|
private static boolean |
shouldExpireWithin(java.time.Duration ttl) |
(专用程序包) void |
unlock(java.lang.String name)
Explicitly remove a write lock from a cache.
|
org.springframework.data.redis.cache.RedisCacheWriter |
withStatisticsCollector(org.springframework.data.redis.cache.CacheStatisticsCollector cacheStatisticsCollector) |
private final org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory
private final java.time.Duration sleepTime
DefaultRedisCacheWriter(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory)
connectionFactory - must not be null.private DefaultRedisCacheWriter(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory,
java.time.Duration sleepTime)
connectionFactory - must not be null.sleepTime - sleep time between lock request attempts. Must not be
null. Use Duration.ZERO to disable locking.public void put(java.lang.String name,
byte[] key,
byte[] value,
@Nullable
java.time.Duration ttl)
put 在接口中 org.springframework.data.redis.cache.RedisCacheWriterpublic byte[] get(java.lang.String name,
byte[] key)
get 在接口中 org.springframework.data.redis.cache.RedisCacheWriterpublic byte[] putIfAbsent(java.lang.String name,
byte[] key,
byte[] value,
@Nullable
java.time.Duration ttl)
putIfAbsent 在接口中 org.springframework.data.redis.cache.RedisCacheWriterpublic void remove(java.lang.String name,
byte[] key)
remove 在接口中 org.springframework.data.redis.cache.RedisCacheWritername - key - public void clean(java.lang.String name,
byte[] pattern)
clean 在接口中 org.springframework.data.redis.cache.RedisCacheWriterpublic void clearStatistics(java.lang.String s)
clearStatistics 在接口中 org.springframework.data.redis.cache.RedisCacheWriterpublic org.springframework.data.redis.cache.RedisCacheWriter withStatisticsCollector(org.springframework.data.redis.cache.CacheStatisticsCollector cacheStatisticsCollector)
withStatisticsCollector 在接口中 org.springframework.data.redis.cache.RedisCacheWritervoid lock(java.lang.String name)
name - the name of the cache to lock.void unlock(java.lang.String name)
name - the name of the cache to unlock.private java.lang.Boolean doLock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection)
private java.lang.Long doUnlock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection)
boolean doCheckLock(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection)
private boolean isLockingCacheWriter()
RedisCacheWriter uses locks.private <T> T execute(java.lang.String name,
java.util.function.Function<org.springframework.data.redis.connection.RedisConnection,T> callback)
private void executeLockFree(java.util.function.Consumer<org.springframework.data.redis.connection.RedisConnection> callback)
private void checkAndPotentiallyWaitUntilUnlocked(java.lang.String name,
org.springframework.data.redis.connection.RedisConnection connection)
private static boolean shouldExpireWithin(@Nullable
java.time.Duration ttl)
private static byte[] createCacheLockKey(java.lang.String name)
public org.springframework.data.redis.cache.CacheStatistics getCacheStatistics(java.lang.String s)
getCacheStatistics 在接口中 org.springframework.data.redis.cache.CacheStatisticsProviderCopyright © 2024 pig4cloud. All rights reserved.