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<RedisBitmapService> _logger;
|
|
public RedisBitmapService(
|
IRedisConnectionManager connectionManager,
|
IOptions<RedisOptions> options,
|
ILogger<RedisBitmapService> 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);
|
}
|
}
|
}
|