From 3fb0e985901382c52093c7bf001a4af10e634869 Mon Sep 17 00:00:00 2001 From: javahongxi Date: Sun, 30 Dec 2018 04:44:16 +0800 Subject: [PATCH] =?UTF-8?q?RedisService=E5=B0=81=E8=A3=85=E7=AE=80?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../whatsmars/redis/client/RedisTemplate.java | 4 +- .../client/service/RedisListService.java | 16 - .../redis/client/service/RedisMapService.java | 28 -- .../redis/client/service/RedisService.java | 173 +++------ .../client/service/RedisSortedSetService.java | 18 - .../client/service/RedisStringService.java | 48 --- .../service/impl/RedisListServiceImpl.java | 57 --- .../service/impl/RedisMapServiceImpl.java | 157 -------- .../client/service/impl/RedisServiceImpl.java | 342 ++++++++++-------- .../impl/RedisSortedSetServiceImpl.java | 58 --- .../service/impl/RedisStringServiceImpl.java | 116 ------ .../spring/boot/controller/InitRunner.java | 25 +- 12 files changed, 267 insertions(+), 775 deletions(-) delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisListService.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisMapService.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisSortedSetService.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisListServiceImpl.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisMapServiceImpl.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisSortedSetServiceImpl.java delete mode 100644 whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java 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 d61e78b1..aac8e0e1 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 @@ -32,10 +32,10 @@ public class RedisTemplate { } } - public void set(String key, String value, int activeTime) { + public void set(String key, String value, int seconds) { ShardedJedis jedis = fetchJedis(); try { - jedis.setex(key, activeTime, value); + jedis.setex(key, seconds, value); } finally { release(jedis); } diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisListService.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisListService.java deleted file mode 100644 index 483d93ed..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisListService.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service; - -import java.util.List; - -public interface RedisListService { - - long rpush(byte[] key, byte[]... values); - - long rpush(String key, byte[]... values); - - List lrange(byte[] key, long begin, long end); - - List lrange(String key, long begin, long end); - - List lrange(String key); -} diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisMapService.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisMapService.java deleted file mode 100644 index 59af23b6..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisMapService.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -public interface RedisMapService { - - boolean hMSet(String redisKey, Map valueMap); - - Set hKeys(String redisKey); - - Map hGetAll(String redisKey); - - List hMGet(String redisKey, List mapKeys); - - byte[] hGet(String redisKey, String mapKey); - - long hDel(String redisKey, List mapKeys); - - long hDel(String redisKey, byte[] mapKey); - - boolean hSet(String redisKey, String mapKey, String mapValue); - - String hGetString(String redisKey, String mapKey); - - String hGet(String redisKey, byte[] mapKey); -} diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisService.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisService.java index de909313..49a54a1c 100644 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisService.java +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisService.java @@ -2,122 +2,63 @@ package org.hongxi.whatsmars.redis.client.service; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Set; -public interface RedisService { - /** - *
-	 *  
-	 * 通过key删除 
-	 * @param keys 
-	 * @return 被删除的记录数
-	 * 
- */ - long delete(String... keys); - - /** - *
-	 *  
-	 * 通过keys删除 
-	 * @param keys 
-	 * @return 被删除的记录数
-	 * 
- */ - long delete(Collection keys); - - /** - *
-	 *  
-	 *  @param key 
-	 *  @param value 
-	 *  @param activeTime 秒 
-	 *  @return 添加key value 并且设置存活时间
-	 * 
- */ - boolean set(byte[] key, byte[] value, long activeTime); - - /** - *
-	 *  
-	 * @param key 
-	 * @param value 
-	 * @param activeTime 秒 
-	 * @return 添加key value 并且设置存活时间
-	 * 
- */ - boolean set(String key, String value, long activeTime); - - /** - *
-	 *  
-	 *  @param key 
-	 *  @param value 
-	 *  @return 添加key value
-	 * 
- */ - boolean set(String key, String value); - - /** - *
-	 *  
-	 *  @param key 
-	 *  @param value 
-	 *  @return 添加key value
-	 * 
- */ - boolean set(byte[] key, byte[] value); - - boolean set(byte[] key, T value, long activeTime); - - boolean set(String key, T value, long activeTime); - - boolean set(String key, T value); - - /** - *
-	 *  
-	 * @param key 
-	 * @return 获得value
-	 * 
- */ - String get(String key); - - T getObject(String key, Class c); - - byte[] getBytes(String key); - - /** - *
-	 *  
-	 * @param pattern 
-	 * @return 通过正则匹配keys
-	 * 
- */ - Set matchKeys(String pattern); - - /** - *
-	 *  
-	 * @param key 
-	 * @return 检查key是否已经存在
-	 * 
- */ - boolean exists(String key); - - /** - *
-	 *  
-	 * @return 清空所有数据
-	 * 
- */ - boolean flushDB(); - - /** - *
-	 *
-	 * @param keys
-	 * @return 批量获取key的值
-	 * 
- */ - List multiGet(Collection keys); +/** + * Created by shenhongxi on 2018/12/24. + */ +public interface RedisService { + + void set(String key, String value); + + void set(String key, String value, long seconds); + + void setIfAbsent(String key, String value); + + String get(String key); + + String getAndSet(String key, String value); + + void multiSet(Map map); + + List multiGet(Collection keys); + + Long increment(String key, long delta); + + Double increment(String key, double delta); + + Integer append(String key, String value); + + String get(String key, long start, long end); + + Long size(String key); + + Boolean setBit(String key, long offset, boolean value); + + Boolean getBit(String key, long offset); + + long sadd(String key, String... values); + + Set smembers(String key); + + void convertAndSend(String channel, Object obj); + + void delete(String key); + + boolean exists(String key); + + Set matchKeys(String pattern); + + void set(String key, T value, long seconds) throws Exception; + + void set(String key, T value) throws Exception; + + T get(String key, Class clazz); + + boolean set(byte[] key, byte[] value, long seconds); + + boolean set(byte[] key, byte[] value); + + byte[] getBytes(String key); } diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisSortedSetService.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisSortedSetService.java deleted file mode 100644 index ef05c1f0..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisSortedSetService.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service; - -import org.springframework.data.redis.connection.RedisZSetCommands.Tuple; - -import java.util.Set; - -public interface RedisSortedSetService { - - long zadd(String key, Set tuples); - - long zadd(byte[] key, Set tuples); - - Set zrange(byte[] key, int start, int end); - - Set zrange(String key); - - Set zrange(String key, int start, int end); -} 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 deleted file mode 100644 index cdceaf96..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/RedisStringService.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Created by shenhongxi on 2018/12/24. - */ -public interface RedisStringService { - - void set(String key, String value); - - void set(String key, String value, long activeTime); - - void setIfAbsent(String key, String value); - - String get(String key); - - String getAndSet(String key, String value); - - void multiSet(Map map); - - List multiGet(Collection keys); - - Long increment(String key, long delta); - - Double increment(String key, double delta); - - Integer append(String key, String value); - - String get(String key, long start, long end); - - Long size(String key); - - Boolean setBit(String key, long offset, boolean value); - - Boolean getBit(String key, long offset); - - long sadd(String key, String... values); - - Set smembers(String key); - - 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/RedisListServiceImpl.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisListServiceImpl.java deleted file mode 100644 index 884b7a0e..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisListServiceImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service.impl; - -import org.hongxi.whatsmars.redis.client.service.RedisListService; -import org.springframework.dao.DataAccessException; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.core.RedisCallback; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -@Service -public class RedisListServiceImpl implements RedisListService { - - @Resource - private RedisTemplate> redisTemplate; - - @Override - public long rpush(byte[] key, byte[]... values) { - return redisTemplate.execute(new RedisCallback() { - @Override - public Long doInRedis(RedisConnection connection) throws DataAccessException { - return connection.rPush(key, values); - } - }); - } - - @Override - public long rpush(String key, byte[]... values) { - if(values == null || values.length <= 0){ - return 0; - } - return this.rpush(key.getBytes(), values); - } - - @Override - public List lrange(byte[] key, long begin, long end) { - return redisTemplate.execute(new RedisCallback>() { - @Override - public List doInRedis(RedisConnection connection) throws DataAccessException { - return connection.lRange(key, begin, end); - } - }); - } - - @Override - public List lrange(String key, long begin, long end) { - return this.lrange(key.getBytes(), begin, end); - } - - @Override - public List lrange(String key) { - return this.lrange(key, 0, -1); - } - -} diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisMapServiceImpl.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisMapServiceImpl.java deleted file mode 100644 index a2af6db9..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisMapServiceImpl.java +++ /dev/null @@ -1,157 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service.impl; - -import lombok.extern.slf4j.Slf4j; -import org.hongxi.whatsmars.redis.client.service.RedisMapService; -import org.springframework.dao.DataAccessException; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.core.RedisCallback; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import javax.annotation.Resource; -import java.io.UnsupportedEncodingException; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@Slf4j -@Service -public class RedisMapServiceImpl implements RedisMapService { - - private static final String CHARSET = "UTF8"; - - @Resource - private RedisTemplate> redisTemplate; - - @Override - public boolean hMSet(String redisKey, Map valueMap) { - if(CollectionUtils.isEmpty(valueMap)){ - return false; - } - redisTemplate.execute(new RedisCallback() { - - @Override - public Boolean doInRedis(RedisConnection connection) throws DataAccessException { - connection.hMSet(redisKey.getBytes(), valueMap); - return true; - } - }); - return false; - } - - @Override - public Set hKeys(String redisKey) { - return redisTemplate.execute(new RedisCallback>() { - - @Override - public Set doInRedis(RedisConnection connection) throws DataAccessException { - return connection.hKeys(redisKey.getBytes()); - } - }); - } - - @Override - public Map hGetAll(String redisKey) { - return redisTemplate.execute(new RedisCallback>() { - - @Override - public Map doInRedis(RedisConnection connection) throws DataAccessException { - return connection.hGetAll(redisKey.getBytes()); - } - }); - } - - @Override - public List hMGet(String redisKey, List mapKeys) { - return redisTemplate.execute(new RedisCallback>() { - - @Override - public List doInRedis(RedisConnection connection) throws DataAccessException { - byte[][] keys = new byte[mapKeys.size()][]; - - for (int i = 0; i < mapKeys.size(); i++) { - keys[i] = mapKeys.get(i).getBytes(); - } - - return connection.hMGet(redisKey.getBytes(), keys); - } - }); - } - - @Override - public byte[] hGet(String redisKey, String mapKey) { - return redisTemplate.execute(new RedisCallback() { - - @Override - public byte[] doInRedis(RedisConnection connection) throws DataAccessException { - return connection.hGet(redisKey.getBytes(), mapKey.getBytes()); - } - }); - } - - @Override - public long hDel(String redisKey, List mapKeys) { - return redisTemplate.execute(new RedisCallback() { - - @Override - public Long doInRedis(RedisConnection connection) throws DataAccessException { - byte[][] keys = new byte[mapKeys.size()][]; - - for (int i = 0; i < mapKeys.size(); i++) { - keys[i] = mapKeys.get(i).getBytes(); - } - return connection.hDel(redisKey.getBytes(), keys); - } - }); - } - - @Override - public boolean hSet(String redisKey, String mapKey, String mapValue) { - return redisTemplate.execute(new RedisCallback() { - - @Override - public Boolean doInRedis(RedisConnection connection) throws DataAccessException { - return connection.hSet(redisKey.getBytes(), mapKey.getBytes(), mapValue.getBytes()); - } - }); - } - - @Override - public String hGetString(String redisKey, String mapKey) { - byte[] value = hGet(redisKey, mapKey); - try { - return value == null ? null : new String(value, CHARSET); - } catch (UnsupportedEncodingException e) { - log.error(e.getMessage(), e); - } - return null; - } - - @Override - public String hGet(String redisKey, byte[] mapKey) { - return redisTemplate.execute(new RedisCallback() { - - @Override - public String doInRedis(RedisConnection connection) throws DataAccessException { - byte[] value = connection.hGet(redisKey.getBytes(), mapKey); - if(null == value){ - return null; - } - return new String(value); - } - }); - } - - @Override - public long hDel(String redisKey, byte[] mapKey) { - return redisTemplate.execute(new RedisCallback() { - - @Override - public Long doInRedis(RedisConnection connection) throws DataAccessException { - return connection.hDel(redisKey.getBytes(), mapKey); - } - }); - } - -} diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisServiceImpl.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisServiceImpl.java index 27233ebc..ba618624 100644 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisServiceImpl.java +++ b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisServiceImpl.java @@ -1,6 +1,6 @@ package org.hongxi.whatsmars.redis.client.service.impl; -import com.fasterxml.jackson.core.JsonProcessingException; +import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.hongxi.whatsmars.redis.client.service.RedisService; @@ -8,169 +8,201 @@ import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.Serializable; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.concurrent.TimeUnit; +/** + * Created by shenhongxi on 2018/12/24. + */ @Slf4j @Service -public class RedisServiceImpl implements RedisService { - - private static final String CHARSET = "UTF8"; - - @Resource - private RedisTemplate redisTemplate; - - @Override - public boolean set(byte[] key, byte[] value, long activeTime) { - return redisTemplate.execute(new RedisCallback() { - public Boolean doInRedis(RedisConnection connection) throws DataAccessException { - boolean rs = true; - connection.set(key, value); - if (activeTime > 0) { - rs = connection.expire(key, activeTime); - } - return rs; - } - }); - } - - @Override - public boolean set(String key, String value, long activeTime) { - return this.set(key.getBytes(), value.getBytes(), activeTime); - } - - @Override - public boolean set(String key, String value) { - return this.set(key, value, 0L); - } - - @Override - public boolean set(byte[] key, byte[] value) { - return this.set(key, value, 0L); - } - - @Override - public boolean set(byte[] key, T value, long activeTime){ - ObjectMapper objectMapper = new ObjectMapper(); - byte[] b = null; - try { - b = objectMapper.writeValueAsBytes(value); - } catch (JsonProcessingException e) { - log.error(e.getMessage(), e); - return false; - } - return this.set(key, b, activeTime); - } - - @Override - public boolean set(String key, T value, long activeTime) { - return this.set(key.getBytes(), value, activeTime); - } - - @Override - public boolean set(String key, T value) { - return this.set(key, value, 0L); - } - - @Override - public String get(String key) { - return redisTemplate.execute(new RedisCallback() { - public String doInRedis(RedisConnection connection) throws DataAccessException { - try { - byte[] value = connection.get(key.getBytes()); - return value == null ? null : new String(value, CHARSET); - } catch (UnsupportedEncodingException e) { - log.error(e.getMessage(), e); - } - return null; - } - }); - } - - @Override - public T getObject(String key, Class c) { - return redisTemplate.execute(new RedisCallback() { - public T doInRedis(RedisConnection connection) throws DataAccessException { - byte[] value = connection.get(key.getBytes()); - if(null == value){ - return null; - } - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.readValue(value, c); - } catch (Exception e) { - log.error(e.getMessage(), e); - } - return null; - } - }); - } - - @Override - public Set matchKeys(String pattern) { - return redisTemplate.keys(pattern); - } - - @Override - public boolean exists(String key) { - return redisTemplate.execute(new RedisCallback() { - public Boolean doInRedis(RedisConnection connection) throws DataAccessException { - return connection.exists(key.getBytes()); - } - }); - } - - @Override - public boolean flushDB() { - return redisTemplate.execute(new RedisCallback() { - public Boolean doInRedis(RedisConnection connection) throws DataAccessException { - connection.flushDb(); - return true; - } - }); - } - - @Override - public long delete(Collection keys) { - return redisTemplate.execute(new RedisCallback() { - public Long doInRedis(RedisConnection connection) throws DataAccessException { - long result = 0; - for (String key : keys) { - result += connection.del(key.getBytes()); - } - return result; - } - }); - } - - @Override - public long delete(String... keys) { - Collection cols = new ArrayList(); - for (String key : keys) { - cols.add(key); - } - return this.delete(cols); - } - - @Override - public byte[] getBytes(String key) { - return redisTemplate.execute(new RedisCallback() { - public byte[] doInRedis(RedisConnection connection) throws DataAccessException { - return connection.get(key.getBytes()); - } - }); - } - - @Override - public List multiGet(Collection keys) { - return redisTemplate.opsForValue().multiGet(keys); - } +public class RedisServiceImpl implements RedisService { + + @Resource + private RedisTemplate redisTemplate; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Override + public void set(String key, String value) { + stringRedisTemplate.opsForValue().set(key, value); + } + + @Override + public void set(String key, String value, long seconds) { + stringRedisTemplate.opsForValue().set(key, value, seconds, TimeUnit.SECONDS); + } + + @Override + public void setIfAbsent(String key, String value) { + stringRedisTemplate.opsForValue().setIfAbsent(key, value); + } + + @Override + public String get(String key) { + return stringRedisTemplate.opsForValue().get(key); + } + + @Override + public String getAndSet(String key, String value) { + return stringRedisTemplate.opsForValue().getAndSet(key, value); + } + + @Override + public void multiSet(Map map) { + stringRedisTemplate.opsForValue().multiSet(map); + } + + @Override + public List multiGet(Collection keys) { + return stringRedisTemplate.opsForValue().multiGet(keys); + } + + @Override + public Long increment(String key, long delta) { + return stringRedisTemplate.opsForValue().increment(key, delta); + } + + @Override + public Double increment(String key, double delta) { + return stringRedisTemplate.opsForValue().increment(key, delta); + } + + @Override + public Integer append(String key, String value) { + return stringRedisTemplate.opsForValue().append(key, value); + } + + @Override + public String get(String key, long start, long end) { + return stringRedisTemplate.opsForValue().get(key, start, end); + } + + @Override + public Long size(String key) { + return stringRedisTemplate.opsForValue().size(key); + } + + @Override + public Boolean setBit(String key, long offset, boolean value) { + return stringRedisTemplate.opsForValue().setBit(key, offset, value); + } + + @Override + public Boolean getBit(String key, long offset) { + return stringRedisTemplate.opsForValue().getBit(key, offset); + } + + @Override + public long sadd(String key, String... values) { + return stringRedisTemplate.opsForSet().add(key, values); + } + + @Override + public Set smembers(String key) { + return stringRedisTemplate.opsForSet().members(key); + } + + @Override + 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); + } + + @Override + public boolean exists(String key) { + return redisTemplate.execute(new RedisCallback() { + @Override + public Boolean doInRedis(RedisConnection connection) throws DataAccessException { + return connection.exists(key.getBytes()); + } + }); + } + + @Override + public Set matchKeys(String pattern) { + return redisTemplate.keys(pattern); + } + + @Override + public void set(String key, T value, long seconds) throws Exception { + this.set(key.getBytes(), serialize(value), seconds); + } + + @Override + public void set(String key, T value) throws Exception { + this.set(key.getBytes(), serialize(value)); + } + + @Override + public T get(String key, Class clazz) { + return redisTemplate.execute(new RedisCallback() { + @Override + public T doInRedis(RedisConnection connection) throws DataAccessException { + byte[] value = connection.get(key.getBytes()); + if (value == null) { + return null; + } + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.readValue(value, clazz); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return null; + } + }); + } + + @Override + public boolean set(byte[] key, byte[] value, long seconds) { + return redisTemplate.execute(new RedisCallback() { + @Override + public Boolean doInRedis(RedisConnection connection) throws DataAccessException { + connection.setEx(key, seconds, value); + return true; + } + }); + } + + @Override + public boolean set(byte[] key, byte[] value) { + return redisTemplate.execute(new RedisCallback() { + @Override + public Boolean doInRedis(RedisConnection connection) throws DataAccessException { + connection.set(key, value); + return true; + } + }); + } + + @Override + public byte[] getBytes(String key) { + return redisTemplate.execute(new RedisCallback() { + @Override + public byte[] doInRedis(RedisConnection connection) throws DataAccessException { + return connection.get(key.getBytes()); + } + }); + } + + private byte[] serialize(T value) throws Exception { + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.writeValueAsBytes(value); + } } diff --git a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisSortedSetServiceImpl.java b/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisSortedSetServiceImpl.java deleted file mode 100644 index 09040545..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisSortedSetServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service.impl; - -import org.hongxi.whatsmars.redis.client.service.RedisSortedSetService; -import org.springframework.dao.DataAccessException; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisZSetCommands.Tuple; -import org.springframework.data.redis.core.RedisCallback; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Set; - -@Service -public class RedisSortedSetServiceImpl implements RedisSortedSetService { - - @Resource - private RedisTemplate> redisTemplate; - - @Override - public long zadd(byte[] key, Set tuples) { - redisTemplate.execute(new RedisCallback() { - - @Override - public Long doInRedis(RedisConnection connection) throws DataAccessException { - return connection.zAdd(key, tuples); - } - }); - return 0; - } - - @Override - public Set zrange(byte[] key, int start, int end) { - return redisTemplate.execute(new RedisCallback>() { - - @Override - public Set doInRedis(RedisConnection connection) throws DataAccessException { - return connection.zRange(key, start, end); - } - }); - } - - @Override - public long zadd(String key, Set tuples) { - return this.zadd(key.getBytes(), tuples); - } - - @Override - public Set zrange(String key) { - return this.zrange(key, 0, -1); - } - - @Override - public Set zrange(String key, int start, int end) { - return this.zrange(key.getBytes(), start, end); - } - -} 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 deleted file mode 100644 index 7a41ec76..00000000 --- a/whatsmars-redis/src/main/java/org/hongxi/whatsmars/redis/client/service/impl/RedisStringServiceImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -package org.hongxi.whatsmars.redis.client.service.impl; - -import com.alibaba.fastjson.JSON; -import org.hongxi.whatsmars.redis.client.service.RedisStringService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -/** - * Created by shenhongxi on 2018/12/24. - */ -@Service -public class RedisStringServiceImpl implements RedisStringService { - - @Autowired - private StringRedisTemplate stringRedisTemplate; - - @Override - public void set(String key, String value) { - stringRedisTemplate.opsForValue().set(key, value); - } - - @Override - public void set(String key, String value, long activeTime) { - stringRedisTemplate.opsForValue().set(key, value, activeTime, TimeUnit.SECONDS); - } - - @Override - public void setIfAbsent(String key, String value) { - stringRedisTemplate.opsForValue().setIfAbsent(key, value); - } - - @Override - public String get(String key) { - return stringRedisTemplate.opsForValue().get(key); - } - - @Override - public String getAndSet(String key, String value) { - return stringRedisTemplate.opsForValue().getAndSet(key, value); - } - - @Override - public void multiSet(Map map) { - stringRedisTemplate.opsForValue().multiSet(map); - } - - @Override - public List multiGet(Collection keys) { - return stringRedisTemplate.opsForValue().multiGet(keys); - } - - @Override - public Long increment(String key, long delta) { - return stringRedisTemplate.opsForValue().increment(key, delta); - } - - @Override - public Double increment(String key, double delta) { - return stringRedisTemplate.opsForValue().increment(key, delta); - } - - @Override - public Integer append(String key, String value) { - return stringRedisTemplate.opsForValue().append(key, value); - } - - @Override - public String get(String key, long start, long end) { - return stringRedisTemplate.opsForValue().get(key, start, end); - } - - @Override - public Long size(String key) { - return stringRedisTemplate.opsForValue().size(key); - } - - @Override - public Boolean setBit(String key, long offset, boolean value) { - return stringRedisTemplate.opsForValue().setBit(key, offset, value); - } - - @Override - public Boolean getBit(String key, long offset) { - return stringRedisTemplate.opsForValue().getBit(key, offset); - } - - @Override - public long sadd(String key, String... values) { - return stringRedisTemplate.opsForSet().add(key, values); - } - - @Override - public Set smembers(String key) { - return stringRedisTemplate.opsForSet().members(key); - } - - @Override - 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-spring-boot/src/main/java/org/hongxi/whatsmars/spring/boot/controller/InitRunner.java b/whatsmars-spring-boot/src/main/java/org/hongxi/whatsmars/spring/boot/controller/InitRunner.java index 0ff3622f..ae7f9bbd 100644 --- a/whatsmars-spring-boot/src/main/java/org/hongxi/whatsmars/spring/boot/controller/InitRunner.java +++ b/whatsmars-spring-boot/src/main/java/org/hongxi/whatsmars/spring/boot/controller/InitRunner.java @@ -1,13 +1,16 @@ package org.hongxi.whatsmars.spring.boot.controller; -import org.hongxi.whatsmars.redis.client.service.RedisStringService; +import org.hongxi.whatsmars.redis.client.service.RedisService; import org.hongxi.whatsmars.spring.boot.async.MessageService; import org.hongxi.whatsmars.spring.boot.dao.UserMapper; +import org.hongxi.whatsmars.spring.boot.model.User; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; /** @@ -24,7 +27,11 @@ public class InitRunner implements CommandLineRunner { @Autowired private MessageService messageService; @Autowired - private RedisStringService redisStringService; + private RedisService redisService; + @Autowired + private RedisTemplate redisTemplate; + @Autowired + private StringRedisTemplate stringRedisTemplate; @Override public void run(String... args) throws Exception { @@ -36,7 +43,17 @@ public class InitRunner implements CommandLineRunner { } String key = "domain"; - redisStringService.set(key, "hongxi.org", 60); // 60s - System.out.println(redisStringService.get(key)); + redisService.set(key, "hongxi.org", 60); // 60s + System.out.println(redisService.get(key)); + + User user = new User(); + user.setUsername("javahongxi"); + user.setNickname("红喜"); + redisService.set("user", user); + System.out.println(redisService.get("user")); + System.out.println(redisService.get("user", User.class)); + redisService.sadd("countries", "China", "America", "Japan"); + System.out.println(redisTemplate.opsForSet().isMember("countries", "China")); // fasle + System.out.println(stringRedisTemplate.opsForSet().isMember("countries", "China")); // true } } -- GitLab