当前位置: 首页 > news >正文

C# 使用 CSRedisCore指南

C# 使用 CSRedisCore指南

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, 2);// 获取成员排名
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("key2", "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 thenredis.call('SET', KEYS[1], current + ARGV[1])elseredis.call('SET', KEYS[1], ARGV[1])endreturn 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<T>(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);elseawait 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 的基本和高级用法,可以在项目中灵活使用了。

http://www.dtcms.com/a/557548.html

相关文章:

  • AD域 BloodHound 2025最新Linux穩定版|Docker封鎖繞過安裝脚本
  • 基于单片机的高频感应加热式棉花糖机的电气控制系统的设计(论文+源码)
  • C++:模板的幻觉 —— 实例化、重定义与隐藏依赖势中
  • 国外市场网站推广公司毕业设计做网站大小有什么要求
  • 【LUT技术专题】SVDLUT代码讲解
  • 基于多模态特征提取与贝叶斯优化的污染源智能识别与分类系统
  • 将遥感数据处理成dfine可以处理的数据
  • 网站关键词掉了织梦网站后台一键更新没反应
  • 前端进阶:从理论到实践体系
  • Android Build系列专题【篇五:构建系统主入口文件build/core/makefile】
  • 网站制作中需要注意的地方研磨材料 东莞网站建设
  • 数字马力Java开发面试题及参考答案(中)
  • MCP服务构建、使用
  • 合肥设计网站公司郑州网站优化外包顾问
  • 什么是共模电平
  • opencv学习笔记8:haar特征、决策树、adaboost初步认识
  • Qt删除布局与布局切换技术详解
  • 国外二手表网站一站式软文发布推广平台
  • 网站难做吗浙江政务服务网
  • css面试题2
  • this view is read-only (IntelliJ IDEA)
  • 公司网站建设必要性网络维护协议
  • 将Python源码分解为字节码:深入理解Python执行机制
  • C++模板元编程学习
  • 虚机镜像创建方法系统化分析:操作路径、技术原理与场景适配
  • 微端网站开发阿里云服务器学生优惠
  • 23 种经典设计模式的名称、意图及适用场景概述
  • Snapan项目--预览文件梳理
  • Readest0.9.90 | 一款好用的开源阅读器,提供划词翻译、高亮笔记、语音朗读等功能,内置大量朗读引擎和云同步
  • [Dify 实战] Dify 与 LangChain 的区别与组合方式:从工作流到编排框架的深度解析