Skip to content

Commit

Permalink
Merge branch 'main' into helm-docs-gen
Browse files Browse the repository at this point in the history
  • Loading branch information
badrishc authored Dec 13, 2024
2 parents 2b665aa + ca02229 commit ad59468
Show file tree
Hide file tree
Showing 78 changed files with 2,744 additions and 965 deletions.
3 changes: 2 additions & 1 deletion benchmark/BDN.benchmark/Operations/OperationsBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public virtual void GlobalSetup()
{
var opts = new GarnetServerOptions
{
QuietMode = true
QuietMode = true,
EnableLua = true,
};
if (Params.useAof)
{
Expand Down
85 changes: 85 additions & 0 deletions benchmark/BDN.benchmark/Operations/ScriptOperations.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

using BenchmarkDotNet.Attributes;

namespace BDN.benchmark.Operations
{
/// <summary>
/// Benchmark for SCRIPT LOAD, SCRIPT EXISTS, EVAL, and EVALSHA
/// </summary>
[MemoryDiagnoser]
public unsafe class ScriptOperations : OperationsBase
{
static ReadOnlySpan<byte> SCRIPT_LOAD => "*3\r\n$6\r\nSCRIPT\r\n$4\r\nLOAD\r\n$8\r\nreturn 1\r\n"u8;
byte[] scriptLoadRequestBuffer;
byte* scriptLoadRequestBufferPointer;

static ReadOnlySpan<byte> SCRIPT_EXISTS_LOADED => "*3\r\n$6\r\nSCRIPT\r\n$4\r\nLOAD\r\n$10\r\nreturn nil\r\n"u8;

static ReadOnlySpan<byte> SCRIPT_EXISTS_TRUE => "*3\r\n$6\r\nSCRIPT\r\n$6\r\nEXISTS\r\n$40\r\n79cefb99366d8809d2e903c5f36f50c2b731913f\r\n"u8;
byte[] scriptExistsTrueRequestBuffer;
byte* scriptExistsTrueRequestBufferPointer;

static ReadOnlySpan<byte> SCRIPT_EXISTS_FALSE => "*3\r\n$6\r\nSCRIPT\r\n$6\r\nEXISTS\r\n$40\r\n0000000000000000000000000000000000000000\r\n"u8;
byte[] scriptExistsFalseRequestBuffer;
byte* scriptExistsFalseRequestBufferPointer;

static ReadOnlySpan<byte> EVAL => "*3\r\n$4\r\nEVAL\r\n$10\r\nreturn nil\r\n$1\r\n0\r\n"u8;
byte[] evalRequestBuffer;
byte* evalRequestBufferPointer;

static ReadOnlySpan<byte> EVALSHA => "*3\r\n$7\r\nEVALSHA\r\n$40\r\n79cefb99366d8809d2e903c5f36f50c2b731913f\r\n$1\r\n0\r\n"u8;
byte[] evalShaRequestBuffer;
byte* evalShaRequestBufferPointer;

public override void GlobalSetup()
{
base.GlobalSetup();

SetupOperation(ref scriptLoadRequestBuffer, ref scriptLoadRequestBufferPointer, SCRIPT_LOAD);

byte[] scriptExistsLoadedBuffer = null;
byte* scriptExistsLoadedPointer = null;
SetupOperation(ref scriptExistsLoadedBuffer, ref scriptExistsLoadedPointer, SCRIPT_EXISTS_LOADED);
_ = session.TryConsumeMessages(scriptExistsLoadedPointer, scriptExistsLoadedBuffer.Length);
SetupOperation(ref scriptExistsTrueRequestBuffer, ref scriptExistsTrueRequestBufferPointer, SCRIPT_EXISTS_TRUE);

SetupOperation(ref scriptExistsFalseRequestBuffer, ref scriptExistsFalseRequestBufferPointer, SCRIPT_EXISTS_FALSE);

SetupOperation(ref evalRequestBuffer, ref evalRequestBufferPointer, EVAL);

SetupOperation(ref evalShaRequestBuffer, ref evalShaRequestBufferPointer, EVALSHA);
}

[Benchmark]
public void ScriptLoad()
{
_ = session.TryConsumeMessages(scriptLoadRequestBufferPointer, scriptLoadRequestBuffer.Length);
}

[Benchmark]
public void ScriptExistsTrue()
{
_ = session.TryConsumeMessages(scriptExistsTrueRequestBufferPointer, scriptExistsTrueRequestBuffer.Length);
}

[Benchmark]
public void ScriptExistsFalse()
{
_ = session.TryConsumeMessages(scriptExistsFalseRequestBufferPointer, scriptExistsFalseRequestBuffer.Length);
}

[Benchmark]
public void Eval()
{
_ = session.TryConsumeMessages(evalRequestBufferPointer, evalRequestBuffer.Length);
}

[Benchmark]
public void EvalSha()
{
_ = session.TryConsumeMessages(evalShaRequestBufferPointer, evalShaRequestBuffer.Length);
}
}
}
4 changes: 2 additions & 2 deletions libs/cluster/Session/SlotVerification/ClusterSlotVerify.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,9 @@ ClusterSlotVerificationResult MultiKeySlotVerify(ClusterConfig config, ref Sessi
ref var key = ref parseState.GetArgSliceByRef(csvi.firstKey);
var slot = ArgSliceUtils.HashSlot(ref key);
var verifyResult = SingleKeySlotVerify(ref config, ref key, csvi.readOnly, csvi.sessionAsking, slot);
var stride = csvi.firstKey + csvi.step;
var secondKey = csvi.firstKey + csvi.step;

for (var i = stride; i < csvi.lastKey; i += stride)
for (var i = secondKey; i < csvi.lastKey; i += csvi.step)
{
if (csvi.keyNumOffset == i)
continue;
Expand Down
8 changes: 8 additions & 0 deletions libs/common/AsciiUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ public static void ToUpperInPlace(Span<byte> command)
Ascii.ToUpperInPlace(command, out _);
}

/// <summary>
/// Convert ASCII Span to lower case
/// </summary>
public static void ToLowerInPlace(Span<byte> command)
{
Ascii.ToLowerInPlace(command, out _);
}

/// <inheritdoc cref="EqualsUpperCaseSpanIgnoringCase(ReadOnlySpan{byte}, ReadOnlySpan{byte})"/>
public static bool EqualsUpperCaseSpanIgnoringCase(this Span<byte> left, ReadOnlySpan<byte> right)
=> EqualsUpperCaseSpanIgnoringCase((ReadOnlySpan<byte>)left, right);
Expand Down
Loading

0 comments on commit ad59468

Please sign in to comment.