rBlockingQueue);
+
+ /**
+ * 自增 Key 的值;1、2、3、4
+ *
+ * @param key 键
+ * @return 自增后的值
+ */
+ long incr(String key);
+
+ /**
+ * 指定值,自增 Key 的值;1、2、3、4
+ *
+ * @param key 键
+ * @return 自增后的值
+ */
+ long incrBy(String key, long delta);
+
+ /**
+ * 自减 Key 的值;1、2、3、4
+ *
+ * @param key 键
+ * @return 自增后的值
+ */
+ long decr(String key);
+
+ /**
+ * 指定值,自增 Key 的值;1、2、3、4
+ *
+ * @param key 键
+ * @return 自增后的值
+ */
+ long decrBy(String key, long delta);
+
+
+ /**
+ * 移除指定 key 的值
+ *
+ * @param key 键
+ */
+ void remove(String key);
+
+ /**
+ * 判断指定 key 的值是否存在
+ *
+ * @param key 键
+ * @return true/false
+ */
+ boolean isExists(String key);
+
+ /**
+ * 将指定的值添加到集合中
+ *
+ * @param key 键
+ * @param value 值
+ */
+ void addToSet(String key, String value);
+
+ /**
+ * 判断指定的值是否是集合的成员
+ *
+ * @param key 键
+ * @param value 值
+ * @return 如果是集合的成员返回 true,否则返回 false
+ */
+ boolean isSetMember(String key, String value);
+
+ /**
+ * 将指定的值添加到列表中
+ *
+ * @param key 键
+ * @param value 值
+ */
+ void addToList(String key, String value);
+
+ /**
+ * 获取列表中指定索引的值
+ *
+ * @param key 键
+ * @param index 索引
+ * @return 值
+ */
+ String getFromList(String key, int index);
+
+ /**
+ * 将指定的键值对添加到哈希表中
+ *
+ * @param key 键
+ * @param field 字段
+ * @param value 值
+ */
+ void addToMap(String key, String field, String value);
+
+ /**
+ * 获取哈希表中指定字段的值
+ *
+ * @param key 键
+ * @param field 字段
+ * @return 值
+ */
+ String getFromMap(String key, String field);
+
+ /**
+ * 将指定的值添加到有序集合中
+ *
+ * @param key 键
+ * @param value 值
+ */
+ void addToSortedSet(String key, String value);
+
+ /**
+ * 获取 Redis 锁(可重入锁)
+ *
+ * @param key 键
+ * @return Lock
+ */
+ RLock getLock(String key);
+
+ /**
+ * 获取 Redis 锁(公平锁)
+ *
+ * @param key 键
+ * @return Lock
+ */
+ RLock getFairLock(String key);
+
+ /**
+ * 获取 Redis 锁(读写锁)
+ *
+ * @param key 键
+ * @return RReadWriteLock
+ */
+ RReadWriteLock getReadWriteLock(String key);
+
+ /**
+ * 获取 Redis 信号量
+ *
+ * @param key 键
+ * @return RSemaphore
+ */
+ RSemaphore getSemaphore(String key);
+
+ /**
+ * 获取 Redis 过期信号量
+ *
+ * 基于Redis的Redisson的分布式信号量(Semaphore)Java对象RSemaphore采用了与java.util.concurrent.Semaphore相似的接口和用法。
+ * 同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。
+ *
+ * @param key 键
+ * @return RPermitExpirableSemaphore
+ */
+ RPermitExpirableSemaphore getPermitExpirableSemaphore(String key);
+
+ /**
+ * 闭锁
+ *
+ * @param key 键
+ * @return RCountDownLatch
+ */
+ RCountDownLatch getCountDownLatch(String key);
+
+ /**
+ * 布隆过滤器
+ *
+ * @param key 键
+ * @param 存放对象
+ * @return 返回结果
+ */
+ RBloomFilter getBloomFilter(String key);
+
+}
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/redis/RedissonService.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/redis/RedissonService.java
new file mode 100644
index 0000000000000000000000000000000000000000..73225854423a8575a39f6257f76ca6f112d05e26
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/redis/RedissonService.java
@@ -0,0 +1,149 @@
+package cn.bugstack.infrastructure.redis;
+
+import org.redisson.api.*;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.Duration;
+
+/**
+ * Redis 服务 - Redisson
+ * @author Fuzhengwei bugstack.cn @小傅哥
+ */
+@Service("redissonService")
+public class RedissonService implements IRedisService {
+
+ @Resource
+ private RedissonClient redissonClient;
+
+ public void setValue(String key, T value) {
+ redissonClient.getBucket(key).set(value);
+ }
+
+ @Override
+ public void setValue(String key, T value, long expired) {
+ RBucket bucket = redissonClient.getBucket(key);
+ bucket.set(value, Duration.ofMillis(expired));
+ }
+
+ public T getValue(String key) {
+ return redissonClient.getBucket(key).get();
+ }
+
+ @Override
+ public RQueue getQueue(String key) {
+ return redissonClient.getQueue(key);
+ }
+
+ @Override
+ public RBlockingQueue getBlockingQueue(String key) {
+ return redissonClient.getBlockingQueue(key);
+ }
+
+ @Override
+ public RDelayedQueue getDelayedQueue(RBlockingQueue rBlockingQueue) {
+ return redissonClient.getDelayedQueue(rBlockingQueue);
+ }
+
+ @Override
+ public long incr(String key) {
+ return redissonClient.getAtomicLong(key).incrementAndGet();
+ }
+
+ @Override
+ public long incrBy(String key, long delta) {
+ return redissonClient.getAtomicLong(key).addAndGet(delta);
+ }
+
+ @Override
+ public long decr(String key) {
+ return redissonClient.getAtomicLong(key).decrementAndGet();
+ }
+
+ @Override
+ public long decrBy(String key, long delta) {
+ return redissonClient.getAtomicLong(key).addAndGet(-delta);
+ }
+
+ @Override
+ public void remove(String key) {
+ redissonClient.getBucket(key).delete();
+ }
+
+ @Override
+ public boolean isExists(String key) {
+ return redissonClient.getBucket(key).isExists();
+ }
+
+ public void addToSet(String key, String value) {
+ RSet set = redissonClient.getSet(key);
+ set.add(value);
+ }
+
+ public boolean isSetMember(String key, String value) {
+ RSet set = redissonClient.getSet(key);
+ return set.contains(value);
+ }
+
+ public void addToList(String key, String value) {
+ RList list = redissonClient.getList(key);
+ list.add(value);
+ }
+
+ public String getFromList(String key, int index) {
+ RList list = redissonClient.getList(key);
+ return list.get(index);
+ }
+
+ public void addToMap(String key, String field, String value) {
+ RMap map = redissonClient.getMap(key);
+ map.put(field, value);
+ }
+
+ public String getFromMap(String key, String field) {
+ RMap map = redissonClient.getMap(key);
+ return map.get(field);
+ }
+
+ public void addToSortedSet(String key, String value) {
+ RSortedSet sortedSet = redissonClient.getSortedSet(key);
+ sortedSet.add(value);
+ }
+
+ @Override
+ public RLock getLock(String key) {
+ return redissonClient.getLock(key);
+ }
+
+ @Override
+ public RLock getFairLock(String key) {
+ return redissonClient.getFairLock(key);
+ }
+
+ @Override
+ public RReadWriteLock getReadWriteLock(String key) {
+ return redissonClient.getReadWriteLock(key);
+ }
+
+ @Override
+ public RSemaphore getSemaphore(String key) {
+ return redissonClient.getSemaphore(key);
+ }
+
+ @Override
+ public RPermitExpirableSemaphore getPermitExpirableSemaphore(String key) {
+ return redissonClient.getPermitExpirableSemaphore(key);
+ }
+
+ @Override
+ public RCountDownLatch getCountDownLatch(String key) {
+ return redissonClient.getCountDownLatch(key);
+ }
+
+ @Override
+ public RBloomFilter getBloomFilter(String key) {
+ return redissonClient.getBloomFilter(key);
+ }
+
+
+}