diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisCallback.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisCallback.java new file mode 100644 index 0000000000000000000000000000000000000000..521499d9d110d080ce6de7fee9f4d27a9f2d2bd0 --- /dev/null +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisCallback.java @@ -0,0 +1,11 @@ +package org.hongxi.whatsmars.redis.client; + +import redis.clients.jedis.ShardedJedis; + +/** + * Created by shenhongxi on 2018/12/30. + */ +public interface RedisCallback { + + T doInRedis(ShardedJedis jedis); +} diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisTemplate.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisTemplate.java index 3786f6fa15aebe04c78a1296da3cb307ea471aac..d61e78b14988bc5f5b8c1724c244fa73cee0d988 100644 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisTemplate.java +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/RedisTemplate.java @@ -14,6 +14,15 @@ public class RedisTemplate { private ShardedJedisPool shardedJedisPool; + public T execute(RedisCallback action) { + ShardedJedis jedis = fetchJedis(); + try { + return action.doInRedis(jedis); + } finally { + release(jedis); + } + } + public void set(String key, String value) { ShardedJedis jedis = fetchJedis(); try { @@ -128,7 +137,7 @@ public class RedisTemplate { } } - public long addSet(String key, String... values) { + public long sadd(String key, String... values) { ShardedJedis jedis = fetchJedis(); try { return jedis.sadd(key, values); @@ -137,7 +146,7 @@ public class RedisTemplate { } } - public Set getSet(String key) { + public Set smembers(String key) { ShardedJedis jedis = fetchJedis(); try { return jedis.smembers(key); diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java index ac138bb10be3cf8cf79e8b568aec2ceedddb2a50..cdceaf965619ea0d287f22dc1562da75e514ff90 100644 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java @@ -38,9 +38,11 @@ public interface RedisStringService { Boolean getBit(String key, long offset); - long addSet(String key, String... values); + long sadd(String key, String... values); - Set getSet(String key); + Set smembers(String key); - void pubMsg(String channel, Object obj); + void convertAndSend(String channel, Object obj); + + void delete(String key); } diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java index 7473add08cd9ffe55f5c3a276324144720a8362f..7a41ec764498083b94b7276afb9e02f1cf45727c 100644 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java @@ -92,20 +92,25 @@ public class RedisStringServiceImpl implements RedisStringService { } @Override - public long addSet(String key, String... values) { + public long sadd(String key, String... values) { return stringRedisTemplate.opsForSet().add(key, values); } @Override - public Set getSet(String key) { + public Set smembers(String key) { return stringRedisTemplate.opsForSet().members(key); } @Override - public void pubMsg(String channel, Object obj) { + public void convertAndSend(String channel, Object obj) { assert obj != null; String msg = obj instanceof String ? String.valueOf(obj) : JSON.toJSONString(obj); stringRedisTemplate.convertAndSend(channel, msg); } + @Override + public void delete(String key) { + stringRedisTemplate.delete(key); + } + } diff --git a/whatsmars-redis/src/test/java/org/hongxi/whatsmars/redis/client/Demo.java b/whatsmars-redis/src/test/java/org/hongxi/whatsmars/redis/client/Demo.java index 7423e9419833dfe834d24b591c18705689fe5a93..f964166ffc441eabbc92ef2bff3fd78ee398ae6c 100644 --- a/whatsmars-redis/src/test/java/org/hongxi/whatsmars/redis/client/Demo.java +++ b/whatsmars-redis/src/test/java/org/hongxi/whatsmars/redis/client/Demo.java @@ -9,6 +9,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import redis.clients.jedis.*; +import java.util.Set; + /** * Created by javahongxi on 2017/6/23. */ @@ -105,4 +107,17 @@ public class Demo { redisTemplate.set(key, "hongxi.org"); assert "hongxi.org".equals(redisTemplate.get(key)); } + + @Test + public void testCallback() { + String key = "countries"; + redisTemplate.sadd(key, "China", "America", "Japan"); + Long result = redisTemplate.execute(new RedisCallback() { + @Override + public Long doInRedis(ShardedJedis jedis) { + return jedis.scard(key); + } + }); + assert 3 == result; + } }