wanshenmean
2026-03-27 bf2aa9dd56432a74940ca1bb08fb4d7eaee37045
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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);
        }
    }
}