Skip to content

Commit 752cb7f

Browse files
Mehri.RoohallahMehri.Roohallah
authored andcommitted
[feature] add hash operations
removeItemFromHash replaceHashItem isKeyInHash
1 parent c8bbd76 commit 752cb7f

3 files changed

Lines changed: 53 additions & 2 deletions

File tree

tedisson-spring-boot-starter/src/main/java/com/tosan/client/redis/api/TedissonCacheManager.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,27 @@ public interface TedissonCacheManager {
7272
*/
7373
void addItemToHash(String key, Object value, Long timeToLive, TimeUnit timeUnit);
7474

75+
/**
76+
* @param key Hash key
77+
*/
78+
void removeItemFromHash(String key);
79+
80+
/**
81+
* @param key Hash key
82+
* @param value Item new value
83+
*/
84+
void replaceHashItem(String key, Object value);
85+
86+
/**
87+
* @param key Hash key
88+
* @return Whether item exist in cache or not
89+
*/
90+
boolean isKeyInHash(String key);
91+
7592
/**
7693
* Redis supports this feature, but the Local Cache does not.
77-
* @param cacheName Cache name
94+
*
95+
* @param cacheName Cache name
7896
* @param timeToLive Cache time to live. All items expire after a timeToLive period from now.
7997
* @param timeUnit Time unit for time to live and time to idle
8098
*/

tedisson-spring-boot-starter/src/main/java/com/tosan/client/redis/impl/TedissonLocalCacheManagerImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,21 @@ public void addItemToHash(String key, Object value, Long timeToLive, TimeUnit ti
5858
localCacheManager.addItemToCache(key, key, value, timeToLive, timeUnit);
5959
}
6060

61+
@Override
62+
public void removeItemFromHash(String key) {
63+
localCacheManager.removeItemFromCache(key, key);
64+
}
65+
66+
@Override
67+
public void replaceHashItem(String key, Object value) {
68+
localCacheManager.replaceCacheItem(key, key, value);
69+
}
70+
71+
@Override
72+
public boolean isKeyInHash(String key) {
73+
return localCacheManager.isKeyInCache(key, key);
74+
}
75+
6176
@Override
6277
public void expireCache(String cacheName, Long timeToLive, TimeUnit timeUnit) {
6378
//Not supported

tedisson-spring-boot-starter/src/main/java/com/tosan/client/redis/impl/redisson/TedissonCentralCacheManagerImpl.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,28 @@ public void addItemToCache(String cacheName, String key, Object value, Long time
160160
@Override
161161
public void addItemToHash(String key, Object value, Long timeToLive, TimeUnit timeUnit) {
162162
RMap<String, CacheElement> map = redisClient.getMap(key);
163-
map.put(key, new CacheElement(value, instanceID));
163+
map.fastPut(key, new CacheElement(value, instanceID));
164164
map.expire(Duration.of(timeToLive, timeUnit.toChronoUnit()));
165165
}
166166

167+
@Override
168+
public void removeItemFromHash(String key) {
169+
RMap<String, CacheElement> map = redisClient.getMap(key);
170+
map.fastRemove(key);
171+
}
172+
173+
@Override
174+
public void replaceHashItem(String key, Object value) {
175+
RMap<String, CacheElement> map = redisClient.getMap(key);
176+
map.fastReplace(key, new CacheElement(value, instanceID));
177+
}
178+
179+
@Override
180+
public boolean isKeyInHash(String key) {
181+
RMap<String, CacheElement> map = redisClient.getMap(key);
182+
return map.get(key) != null;
183+
}
184+
167185
@Override
168186
public void expireCache(String cacheName, Long timeToLive, TimeUnit timeUnit) {
169187
RMapCache<String, CacheElement> map = redisClient.getMapCache(cacheName);

0 commit comments

Comments
 (0)