diff --git a/solon-projects/solon-plugin-data/lettuce-solon-plugin/readme.md b/solon-projects/solon-plugin-data/lettuce-solon-plugin/readme.md
new file mode 100644
index 0000000000..8127559d5e
--- /dev/null
+++ b/solon-projects/solon-plugin-data/lettuce-solon-plugin/readme.md
@@ -0,0 +1,124 @@
+# lettuce-solon-plugin
+
+> lettuce本身易于适配,方便使用,本插件只是做了一层薄薄的适配,方便与在某些情况下更加便利的使用。
+
+
+## 依赖引入
+
+```xml
+
+ org.noear
+ lettuce-solon-plugin
+ ${solon.version}
+
+```
+
+## 配置文件
+
+```yaml
+### 任意选一种
+### 模式一
+lettuce.rd1:
+ # Redis模式 (standalone, cluster, sentinel)
+ redis-mode: standalone
+ redis-uri: redis://localhost:6379/0
+
+#### 模式二
+lettuce.rd2:
+ # Redis模式 (standalone, cluster, sentinel)
+ redis-mode: standalone
+ config:
+ host: localhost
+ port: 6379
+# socket: xxxx
+# client-name: myClientName
+# database: 0
+# sentinel-masterId: 'mymaster'
+# username: 'myusername'
+# password: 'mypassword'
+# ssl: false
+# verify-mode: FULL
+# startTls: false
+# timeout: 10000
+# sentinels:
+# - host: localhost
+# port: 16379
+# password: 'mypassword'
+# - host: localhost
+# port: 26379
+# password: 'mypassword'
+```
+## java
+
+### Config
+
+```java
+package io.lettuce.solon;
+
+import io.lettuce.core.RedisClient;
+import io.lettuce.core.RedisURI;
+import io.lettuce.core.cluster.ClusterClientOptions;
+import io.lettuce.core.cluster.RedisClusterClient;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+
+@Configuration
+public class Config {
+
+ @Bean(typed = true, name = "redisClient1")
+ public RedisClient redisClient1(@Inject("${lettuce.rd1}") LettuceSupplier lettuceSupplier) {
+ // 默认参数生成
+ return (RedisClient) lettuceSupplier.get();
+ }
+
+ @Bean(name = "redisClient2")
+ public RedisClient redisClient2(@Inject("${lettuce.rd2}") LettuceSupplier lettuceSupplier) {
+ // 获取 配置文件解析的RedisURI
+ RedisURI redisURI = lettuceSupplier.getRedisURI();
+ // 手动创建
+ RedisClient redisClient = RedisClient.create(redisURI);
+ // 手动设置参数
+ redisClient.setOptions(ClusterClientOptions.builder().validateClusterNodeMembership(false).build());
+ return redisClient;
+ }
+
+ @Bean(name = "redisClusterClient1")
+ public RedisClusterClient redisClusterClient1(@Inject("${lettuce.rd3}") LettuceSupplier lettuceSupplier) {
+ // 默认参数生成
+ return (RedisClusterClient) lettuceSupplier.get();
+ }
+
+ @Bean(name = "redisClusterClient2")
+ public RedisClusterClient redisClusterClient2(@Inject("${lettuce.rd3}") LettuceSupplier lettuceSupplier) {
+ // 获取 配置文件解析的RedisURI
+ RedisURI redisURI = lettuceSupplier.getRedisURI();
+ // 手动创建
+ RedisClusterClient redisClusterClient = RedisClusterClient.create(redisURI);
+ // 手动设置参数
+ redisClusterClient.setOptions(ClusterClientOptions.builder().validateClusterNodeMembership(false).build());
+ return redisClusterClient;
+ }
+
+}
+```
+
+### 使用
+
+```java
+@Component
+public class DemoService {
+
+ @Inject
+ RedisClient redisClient;
+
+ /**
+ * 仅仅做测试使用,以实际情况为准
+ */
+ public void demoSet() {
+ redisClient.connect().sync().set("test", "test");
+ System.out.println(redisClient.connect().sync().get("test"));
+ redisClient.connect().sync().del("test");
+ }
+}
+```
\ No newline at end of file
diff --git a/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceProperties.java b/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceProperties.java
index a64b6139f9..2cbdb37e83 100644
--- a/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceProperties.java
+++ b/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceProperties.java
@@ -41,7 +41,7 @@ public static RedisMode getRedisMode(String mode) {
return redisMode;
}
}
- return null;
+ throw new IllegalArgumentException("RedisMode must be one of [standalone, cluster, sentinel]");
}
}
public String getRedisMode() {
diff --git a/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceSupplier.java b/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceSupplier.java
index 88332aa105..17bd3f6da1 100644
--- a/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceSupplier.java
+++ b/solon-projects/solon-plugin-data/lettuce-solon-plugin/src/main/java/io/lettuce/solon/LettuceSupplier.java
@@ -17,62 +17,72 @@ public class LettuceSupplier extends LettuceProperties implements Supplier