ソースを参照

添加两个 call 方法

James 4 年 前
コミット
41972186f9
1 ファイル変更28 行追加0 行削除
  1. 28 0
      src/main/java/com/jfinal/plugin/redis/Redis.java

+ 28 - 0
src/main/java/com/jfinal/plugin/redis/Redis.java

@@ -17,6 +17,7 @@
 package com.jfinal.plugin.redis;
 
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
 import redis.clients.jedis.Jedis;
 import com.jfinal.kit.StrKit;
 
@@ -72,6 +73,33 @@ public class Redis {
 		return cacheMap.get(cacheName);
 	}
 	
+	/**
+	 * 使用 lambda 开放 Jedis API,建议优先使用本方法
+	 * <pre>
+	 * 例子 1:
+	 *   Long ret = Redis.call(j -> j.incrBy("key", 1));
+	 *   
+	 * 例子 2:
+	 *   Long ret = Redis.call(jedis -> {
+	 *       return jedis.incrBy("key", 1);
+	 *   });
+	 * </pre>
+	 */
+	public static <R> R call(Function<Jedis, R> jedis) {
+		return use().call(jedis);
+	}
+	
+	/**
+	 * 使用 lambda 开放 Jedis API,建议优先使用本方法
+	 * <pre>
+	 * 例子:
+	 *   Long ret = Redis.call("cacheName", j -> j.incrBy("key", 1));
+	 * </pre>
+	 */
+	public static <R> R call(String cacheName, Function<Jedis, R> jedis) {
+		return use(cacheName).call(jedis);
+	}
+	
 	public static <T> T callback(ICallback<T> callback) {
 		return callback(use(), callback);
 	}