开发者

C#使用CSRedisCore的实现示例

目录
  • 1. 安装
  • 2. 基本配置
    • 单节点 Redis 配置
    • 哨兵模式配置
    • 集群模式配置
  • 3. 基本使用
    • 字符串操作
    • 哈希操作
    • 列表操作
    • 集合操作
    • 有序集合操作
  • 4. 高级功能
    • 发布订阅
    • 管道操作
    • 事务操作
    • Lua 脚本
  • 5. 在 ASP.NET Core 中使用
    • 配置服务
    • 创建服务类
    • 在控制器中使用
  • 6. 配置选项

    CSRedisCore 是一个功能强大的 .NET Redis 客户端。以下是详细的使用指南:

    1. 安装

    首先通过 NuGet 安装 CSRedisCore:

    dotnet add package CSRedisCore
    

    2. 基本配置

    单节点 Redis 配置

    using CSRedis;
    
    // 创建 Redis 客户端实例
    var redis = new CSRedisClient("127.0.0.1:6379,password=yourpassword,defaultDatabase=0");
    
    // 设置为全局实例(推荐)
    RedisHelper.Initialization(redis);
    

    哨兵模式配置

    var redis = new CSRedisClient(
        "mymaster,password=123456",
        new[] { "192.168.1.10:26379", "192.168.1.11:26379", "192.168.1.12:26379" });
    
    RedisHelper.Initialization(redis);
    

    集群模式配置

    var redis = new CSRedisClient(
        "127.0.0.1:6379,password=123456,defaultDatabase=0",
        "127.0.0.1:6380,password=123456,defaultDatabase=0",
        "127.0.0.1:6381,password=123456,defaultDatabase=0");
    
    RedisHelper.Initialization(redis);
    

    3. 基本使用

    字符串操作

    // 设置值
    RedisHelper.Set("name", "张三");
    RedisHelper.Set("age", 25, TimeSpan.FromMinutes(10)); // 带过期时间
    
    // 获取值
    string name = RedisHelper.Get("name");
    int age = RedisHelper.Get<int>("age");
    
    // 批量操作
    RedisHelper.MSet("key1", "value1", "key2", "value2");
    var values = RedisHelper.MGet<string>("key1", "key2");
    
    // 原子操作
    long newValue = RedisHelper.IncrBy("counter", 1);
    

    哈希操作

    // 设置哈希字段
    RedisHelper.HSet("user:1", "name", "李四");
    RedisHelper.HSet("user:1", "age", 30);
    
    // 获取哈希字段
    string userName = RedisHelper.HGet<string>("user:1", "name");
    int userAge = RedisHelper.HGet<int>("user:1", "age");
    
    // 获取所有字段
    var allFields = RedisHelper.HGetAll<string>("user:1");
    
    // 批量设置
    RedisHelper.HMSet("user:2", new Dictionary<string, object>
    {
        ["name"] = "王五",
        ["age"] = 28,
        ["email"] = "wangwu@example.com"
    });
    

    列表操作

    // 添加元素
    RedisHelper.LPush("mylist", "item1");
    RedisHelper.RPush("mylist", "item2", "item3");
    
    // 获取元素
    string firstItem = RedisHelper.LPop<string>("mylist");
    string lastItem = RedisHelper.RPop<string>("mylist");
    
    // 获取范围
    var items = RedisHelper.LRange<string>("mylist", 0, -1);
    

    集合操作

    // 添加成员
    RedisHelper.SAdd("myset", "member1", "member2", "member3");
    
    // 获取所有成员
    var members = RedisHelper.SMembers<string>("myset");
    
    // 判断成员是否存在
    bool exists = RedisHelper.SIsMember("myset", "member1");
    
    // 集合运算
    RedisHelper.SInterStore("result_set", "set1", "set2");
    

    有序集合操作

    // 添加成员和分数
    RedisHelper.ZAdd("leaderboard", 
        (100, "player1"),
        (85, "player2"),
        (95, "player3")
    );
    
    // 获取排名
    var topPlayers = RedisHelper.ZRange<string>("leaderboard", 0, 2);
    var topPlayersWithScores = RedisHelper.ZRangeWithScores<string>("leaderboard", 0, 2php);
    
    // 获取成员排名
    long rank = RedisHelper.ZRevRank("leaderboard", "player1");
    

    4. 高级功能

    发布订阅

    // 订阅
    var sub = RedisHelper.Subscribe(("channel1", msg => 
    {
        Console.WriteLine($"收到消息: {msg.Body}");
    }));
    
    // 发布
    RedisHelper.Publish("channel1", "Hello, Redis!");
    
    // 取消订阅
    sub.Unsubscribe();
    

    管道操作

    // 使用管道批量执行命令编程
    var pipe = RedisHelper.StartPipe();
    pipe.Set("key1", "value1");
    pipe.Set("keyhttp://www.devze.com2", "value2");
    pipe.IncrBy("counter", 1);
    object[] results = pipe.EndPipe();
    

    事务操作

    var tran = RedisHelper.Multi();
    tran.Set("key1", "value1");
    tran.Set("key2", "value2");
    tran.Exec();
    

    Lua 脚本

    var script = @"
        local current = redis.call('GET', KEYS[1])
        if current then
            redis.call('SET', KEYS[1], current + ARGV[1])
        else
            redis.call('SET', KEYS[1], ARGV[1])
        end
        return redis.call('GET', KEYS[1])
    ";
    
    var result = RedisHelper.Eval<string>(script, "mycounter", 1);
    

    5. 在 ASP.NET Core 中使用

    配置服务

    // Program.cs
    var builder = WebApplication.CreateBuilder(args);
    
    // 配置 CSRedis
    var redisConnection = builder.Configuration.GetConnectionString("Redis");
    var redis = new CSRedisClient(redisConnection);
    RedisHelper.Initialization(redis);
    
    // 注册为服务
    builder.Services.AddSingleton(redis);
    
    // 或者使用依赖注入
    builder.Services.AddScoped<IRedisService, RedisService>();
    

    创建服务类

    public interface IRedisService
    {
        Task<T> GetAsync<jsT>(string key);
        Task SetAsync<T>(string key, T value, TimeSpan? expiry = null);
        Task<bool> RemoveAsync(string key);
    }
    
    public class RedisService : IRedisService
    {
        public async Task<T> GetAsync<T>(string key)
        {
            return await RedisHelper.GetAsync<T>(key);
        }
    
        public async Task SetAsync<T>(string key, T value, TimeSpan? expiry = null)
        {
            if (expiry.HasValue)
                await RedisHelper.SetAsync(key, value, expiry.Value);
            else
                await RedisHelper.SetAsync(key, value);
        }
    
        public async Task<bool> RemoveAsync(string key)
        {
            return await RedisHelper.DelAsync(key) >编程; 0;
        }
    }
    

    在控制器中使用

    [ApiController]
    [Route("api/[controller]")]
    public class UsersController : ControllerBase
    {
        private readonly IRedisService _redisService;
    
        public UsersController(IRedisService redisService)
        {
            _redisService = redisService;
        }
    
        [HttpGet("{id}")]
        public async Task<IActionResult> GetUser(string id)
        {
            var cacheKey = $"user:{id}";
            var user = await _redisService.GetAsync<User>(cacheKey);
            
            if (user == null)
            {
                // 从数据库获取
                user = await _userRepository.GetByIdAsync(id);
                if (user != null)
                {
                    await _redisService.SetAsync(cacheKey, user, TimeSpan.FromMinutes(30));
                }
            }
            
            return Ok(user);
        }
    }
    

    6. 配置选项

    var connectionString = 
        "127.0.0.1:6379,password=123456,defaultDatabase=0," +
        "prefix=myapp_,poolsize=50,ssl=false,writeBuffer=10240";
    
    var redis = new CSRedisClient(connectionString);
    

    主要配置参数:

    • password: Redis 密码
    • defaultDatabase: 默认数据库
    • prefix: 键前缀
    • poolsize: 连接池大小
    • ssl: 是否使用 SSL
    • writeBuffer: 写入缓冲区大小

    这样你就掌握了 CSRedisCore 的基本和高级用法,可以在项目中灵活使用了。

    到此这篇关于C#使用CSRedisCore的实现示例的文章就介绍到这了,更多相关C#使用CSRedisCore内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜