提交 be7326d7 编写于 作者: 武汉红喜's avatar 武汉红喜

RedisTemplate新增方法execute(RedisCallback),重命名一些方法

上级 a8b88006
package org.hongxi.whatsmars.redis.client;
import redis.clients.jedis.ShardedJedis;
/**
* Created by shenhongxi on 2018/12/30.
*/
public interface RedisCallback<T> {
T doInRedis(ShardedJedis jedis);
}
...@@ -14,6 +14,15 @@ public class RedisTemplate { ...@@ -14,6 +14,15 @@ public class RedisTemplate {
private ShardedJedisPool shardedJedisPool; private ShardedJedisPool shardedJedisPool;
public <T> T execute(RedisCallback<T> action) {
ShardedJedis jedis = fetchJedis();
try {
return action.doInRedis(jedis);
} finally {
release(jedis);
}
}
public void set(String key, String value) { public void set(String key, String value) {
ShardedJedis jedis = fetchJedis(); ShardedJedis jedis = fetchJedis();
try { try {
...@@ -128,7 +137,7 @@ public class RedisTemplate { ...@@ -128,7 +137,7 @@ public class RedisTemplate {
} }
} }
public long addSet(String key, String... values) { public long sadd(String key, String... values) {
ShardedJedis jedis = fetchJedis(); ShardedJedis jedis = fetchJedis();
try { try {
return jedis.sadd(key, values); return jedis.sadd(key, values);
...@@ -137,7 +146,7 @@ public class RedisTemplate { ...@@ -137,7 +146,7 @@ public class RedisTemplate {
} }
} }
public Set<String> getSet(String key) { public Set<String> smembers(String key) {
ShardedJedis jedis = fetchJedis(); ShardedJedis jedis = fetchJedis();
try { try {
return jedis.smembers(key); return jedis.smembers(key);
......
...@@ -38,9 +38,11 @@ public interface RedisStringService { ...@@ -38,9 +38,11 @@ public interface RedisStringService {
Boolean getBit(String key, long offset); Boolean getBit(String key, long offset);
long addSet(String key, String... values); long sadd(String key, String... values);
Set<String> getSet(String key); Set<String> smembers(String key);
void pubMsg(String channel, Object obj); void convertAndSend(String channel, Object obj);
void delete(String key);
} }
...@@ -92,20 +92,25 @@ public class RedisStringServiceImpl implements RedisStringService { ...@@ -92,20 +92,25 @@ public class RedisStringServiceImpl implements RedisStringService {
} }
@Override @Override
public long addSet(String key, String... values) { public long sadd(String key, String... values) {
return stringRedisTemplate.opsForSet().add(key, values); return stringRedisTemplate.opsForSet().add(key, values);
} }
@Override @Override
public Set<String> getSet(String key) { public Set<String> smembers(String key) {
return stringRedisTemplate.opsForSet().members(key); return stringRedisTemplate.opsForSet().members(key);
} }
@Override @Override
public void pubMsg(String channel, Object obj) { public void convertAndSend(String channel, Object obj) {
assert obj != null; assert obj != null;
String msg = obj instanceof String ? String.valueOf(obj) : JSON.toJSONString(obj); String msg = obj instanceof String ? String.valueOf(obj) : JSON.toJSONString(obj);
stringRedisTemplate.convertAndSend(channel, msg); stringRedisTemplate.convertAndSend(channel, msg);
} }
@Override
public void delete(String key) {
stringRedisTemplate.delete(key);
}
} }
...@@ -9,6 +9,8 @@ import org.springframework.test.context.ContextConfiguration; ...@@ -9,6 +9,8 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import redis.clients.jedis.*; import redis.clients.jedis.*;
import java.util.Set;
/** /**
* Created by javahongxi on 2017/6/23. * Created by javahongxi on 2017/6/23.
*/ */
...@@ -105,4 +107,17 @@ public class Demo { ...@@ -105,4 +107,17 @@ public class Demo {
redisTemplate.set(key, "hongxi.org"); redisTemplate.set(key, "hongxi.org");
assert "hongxi.org".equals(redisTemplate.get(key)); 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<Long>() {
@Override
public Long doInRedis(ShardedJedis jedis) {
return jedis.scard(key);
}
});
assert 3 == result;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册