public async Task <ReadResult <string> > ReadFrom(LogRef @ref) { long offset = @ref.Offset.GetValueOrDefault(0); var value = (string)await Redis.StringGetRangeAsync(@ref.Key, offset, -1); return(AppendResult.Ok(value, next: @ref.WithOffset(offset + value.Length))); }
public async Task <AppendResult> AppendTo(LogRef @ref, string val) { if (@ref.Offset == null) { throw new LogException("Can't append using a handle without an offset!"); } await _luaAppend.EnsureLoaded(_redisMultiplexer); var newOffset = (long)await Redis.ScriptEvaluateAsync( script : _luaAppend.LoadedLuaScript, parameters : new { key = (RedisKey)@ref.Key, offset = @ref.Offset, val } ); if (newOffset < 0) { return(AppendResult.Fail); } return(AppendResult.Ok(next: @ref.WithOffset(newOffset))); }