Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit a686433

Browse files
committed
Add new EvalCommand/Sha and ExecLua/Sha API's
1 parent d9dc2be commit a686433

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

lib/ServiceStack.Interfaces.dll

0 Bytes
Binary file not shown.

src/ServiceStack.Redis/RedisClient.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,30 @@ public string UrnKey(Type type, object id)
866866

867867
#region LUA EVAL
868868

869+
public RedisText ExecLua(string body, params string[] args)
870+
{
871+
var data = base.EvalCommand(body, 0, args.ToMultiByteArray());
872+
return data.ToRedisText();
873+
}
874+
875+
public RedisText ExecLua(string luaBody, string[] keys, string[] args)
876+
{
877+
var data = base.EvalCommand(luaBody, keys.Length, MergeAndConvertToBytes(keys, args));
878+
return data.ToRedisText();
879+
}
880+
881+
public RedisText ExecLuaSha(string sha1, params string[] args)
882+
{
883+
var data = base.EvalShaCommand(sha1, 0, args.ToMultiByteArray());
884+
return data.ToRedisText();
885+
}
886+
887+
public RedisText ExecLuaSha(string sha1, string[] keys, string[] args)
888+
{
889+
var data = base.EvalShaCommand(sha1, keys.Length, MergeAndConvertToBytes(keys, args));
890+
return data.ToRedisText();
891+
}
892+
869893
public long ExecLuaAsInt(string body, params string[] args)
870894
{
871895
return base.EvalInt(body, 0, args.ToMultiByteArray());

src/ServiceStack.Redis/RedisNativeClient_Utils.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,6 +1150,24 @@ public byte[][] EvalSha(string sha1, int numberKeysInArgs, params byte[][] keys)
11501150
return SendExpectMultiData(cmdArgs);
11511151
}
11521152

1153+
public RedisData EvalCommand(string luaBody, int numberKeysInArgs, params byte[][] keys)
1154+
{
1155+
if (luaBody == null)
1156+
throw new ArgumentNullException("luaBody");
1157+
1158+
var cmdArgs = MergeCommandWithArgs(Commands.Eval, luaBody.ToUtf8Bytes(), keys.PrependInt(numberKeysInArgs));
1159+
return RawCommand(cmdArgs);
1160+
}
1161+
1162+
public RedisData EvalShaCommand(string sha1, int numberKeysInArgs, params byte[][] keys)
1163+
{
1164+
if (sha1 == null)
1165+
throw new ArgumentNullException("sha1");
1166+
1167+
var cmdArgs = MergeCommandWithArgs(Commands.EvalSha, sha1.ToUtf8Bytes(), keys.PrependInt(numberKeysInArgs));
1168+
return RawCommand(cmdArgs);
1169+
}
1170+
11531171
public string CalculateSha1(string luaBody)
11541172
{
11551173
if (luaBody == null)

0 commit comments

Comments
 (0)