using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using WIDESEAWCS_RedisService.Connection; using WIDESEAWCS_RedisService.Options; namespace WIDESEAWCS_RedisService.Bitmap { public class RedisBitmapService : IBitmapService { private readonly IRedisConnectionManager _connectionManager; private readonly RedisOptions _options; private readonly ILogger _logger; public RedisBitmapService( IRedisConnectionManager connectionManager, IOptions options, ILogger logger) { _connectionManager = connectionManager; _options = options.Value; _logger = logger; } private string BuildKey(string key) => $"{_options.KeyPrefix}bitmap:{key}"; public bool SetBit(string key, long offset, bool value) { return _connectionManager.GetDatabase().StringSetBit(BuildKey(key), offset, value); } public bool GetBit(string key, long offset) { return _connectionManager.GetDatabase().StringGetBit(BuildKey(key), offset); } public long BitCount(string key) { return _connectionManager.GetDatabase().StringBitCount(BuildKey(key)); } public long BitCount(string key, long start, long end) { return _connectionManager.GetDatabase().StringBitCount(BuildKey(key), start, end); } } }