最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用CSRedisCore的實(shí)現(xiàn)示例

 更新時(shí)間:2025年11月02日 15:53:45   作者:Yashar Qian  
CSRedisCore是高效的.NET Redis客戶端,支持單節(jié)點(diǎn)、哨兵和集群模式,本文詳細(xì)介紹了其安裝配置方法和基礎(chǔ)操作,感興趣的可以了解一下

CSRedisCore 是一個(gè)功能強(qiáng)大的 .NET Redis 客戶端。以下是詳細(xì)的使用指南:

1. 安裝

首先通過 NuGet 安裝 CSRedisCore:

dotnet add package CSRedisCore

2. 基本配置

單節(jié)點(diǎn) Redis 配置

using CSRedis;

// 創(chuàng)建 Redis 客戶端實(shí)例
var redis = new CSRedisClient("127.0.0.1:6379,password=yourpassword,defaultDatabase=0");

// 設(shè)置為全局實(shí)例(推薦)
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. 基本使用

字符串操作

// 設(shè)置值
RedisHelper.Set("name", "張三");
RedisHelper.Set("age", 25, TimeSpan.FromMinutes(10)); // 帶過期時(shí)間

// 獲取值
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);

哈希操作

// 設(shè)置哈希字段
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");

// 批量設(shè)置
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");

// 集合運(yùn)算
RedisHelper.SInterStore("result_set", "set1", "set2");

有序集合操作

// 添加成員和分?jǐn)?shù)
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. 高級(jí)功能

發(fā)布訂閱

// 訂閱
var sub = RedisHelper.Subscribe(("channel1", msg => 
{
    Console.WriteLine($"收到消息: {msg.Body}");
}));

// 發(fā)布
RedisHelper.Publish("channel1", "Hello, Redis!");

// 取消訂閱
sub.Unsubscribe();

管道操作

// 使用管道批量執(zhí)行命令
var pipe = RedisHelper.StartPipe();
pipe.Set("key1", "value1");
pipe.Set("key2", "value2");
pipe.IncrBy("counter", 1);
object[] results = pipe.EndPipe();

事務(wù)操作

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 中使用

配置服務(wù)

// Program.cs
var builder = WebApplication.CreateBuilder(args);

// 配置 CSRedis
var redisConnection = builder.Configuration.GetConnectionString("Redis");
var redis = new CSRedisClient(redisConnection);
RedisHelper.Initialization(redis);

// 注冊(cè)為服務(wù)
builder.Services.AddSingleton(redis);

// 或者使用依賴注入
builder.Services.AddScoped<IRedisService, RedisService>();

創(chuàng)建服務(wù)類

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);
        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)
        {
            // 從數(shù)據(jù)庫(kù)獲取
            user = await _userRepository.GetByIdAsync(id);
            if (user != null)
            {
                await _redisService.SetAsync(cacheKey, user, TimeSpan.FromMinutes(30));
            }
        }
        
        return Ok(user);
    }
}

6. 配置選項(xiàng)

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

var redis = new CSRedisClient(connectionString);

主要配置參數(shù):

  • password: Redis 密碼
  • defaultDatabase: 默認(rèn)數(shù)據(jù)庫(kù)
  • prefix: 鍵前綴
  • poolsize: 連接池大小
  • ssl: 是否使用 SSL
  • writeBuffer: 寫入緩沖區(qū)大小

這樣你就掌握了 CSRedisCore 的基本和高級(jí)用法,可以在項(xiàng)目中靈活使用了。

到此這篇關(guān)于C#使用CSRedisCore的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C#使用CSRedisCore內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#下listview如何插入圖片

    C#下listview如何插入圖片

    這篇文章主要為大家詳細(xì)介紹了C#下listview如何插入圖片,如何在listview中插入圖片的每一個(gè)步驟為大家分享,感興趣的朋友可以參考一下
    2016-05-05
  • 基于集合的子集與集合的全排列的相關(guān)問題

    基于集合的子集與集合的全排列的相關(guān)問題

    本篇文章介紹了,集合的子集與集合的全排列的相關(guān)系列問題說明,需要的朋友參考下
    2013-05-05
  • C#設(shè)計(jì)模式實(shí)現(xiàn)之迭代器模式

    C#設(shè)計(jì)模式實(shí)現(xiàn)之迭代器模式

    迭代器模式把對(duì)象的職責(zé)分離,職責(zé)分離可以最大限度減少彼此之間的耦合程度,從而建立一個(gè)松耦合的對(duì)象,這篇文章主要給大家介紹了關(guān)于C#設(shè)計(jì)模式實(shí)現(xiàn)之迭代器模式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 使用C#連接SQL?Server的詳細(xì)圖文教程

    使用C#連接SQL?Server的詳細(xì)圖文教程

    初學(xué)者學(xué)習(xí)上位機(jī)開發(fā)遇到數(shù)據(jù)庫(kù)連接不上,是很常見的情況,可能會(huì)以各種形式呈現(xiàn)出來(lái),下面這篇文章主要給大家介紹了關(guān)于使用C#連接SQL?Server的詳細(xì)圖文教程,需要的朋友可以參考下
    2023-02-02
  • C# yield在WCF中的錯(cuò)誤用法(一)

    C# yield在WCF中的錯(cuò)誤用法(一)

    這篇文章主要介紹了C# yield在WCF中的錯(cuò)誤使用(一),本文講解的內(nèi)容據(jù)說是99%的開發(fā)人員都有可能犯的錯(cuò)誤,需要的朋友可以參考下
    2015-04-04
  • C#實(shí)現(xiàn)調(diào)用迅雷下載的方法

    C#實(shí)現(xiàn)調(diào)用迅雷下載的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)調(diào)用迅雷下載的方法,非常實(shí)用的一個(gè)技巧,對(duì)于進(jìn)行C#程序設(shè)計(jì)有很好的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C#使用Stopwatch實(shí)現(xiàn)計(jì)時(shí)功能

    C#使用Stopwatch實(shí)現(xiàn)計(jì)時(shí)功能

    在 C# 中,Stopwatch 類是用于測(cè)量經(jīng)過的時(shí)間的工具類,提供了高精度的計(jì)時(shí)功能,本文主要介紹了C#如何使用Stopwatch實(shí)現(xiàn)計(jì)時(shí)功能,需要的可以參考下
    2024-03-03
  • C# winformTextBox 鍵盤監(jiān)聽方式

    C# winformTextBox 鍵盤監(jiān)聽方式

    這篇文章主要介紹了C# winformTextBox 鍵盤監(jiān)聽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C#數(shù)值轉(zhuǎn)換-顯式數(shù)值轉(zhuǎn)換表(參考)

    C#數(shù)值轉(zhuǎn)換-顯式數(shù)值轉(zhuǎn)換表(參考)

    就是在將一種類型轉(zhuǎn)換成另外一種類型時(shí),需要額外的代碼來(lái)完成這種轉(zhuǎn)換。
    2013-04-04
  • c#一個(gè)定時(shí)重啟的小程序?qū)崿F(xiàn)代碼

    c#一個(gè)定時(shí)重啟的小程序?qū)崿F(xiàn)代碼

    今天有個(gè)朋友找我問有沒有一些能像Windows一樣計(jì)劃任務(wù)重啟的軟件,我也不清楚。他它說能讓我做一個(gè)給他它么?我考慮了一下,他的服務(wù)器都是有安裝.NET框架的,那可以用.NET來(lái)使下~~!
    2008-09-09

最新評(píng)論

游戏| 天等县| 金门县| 安阳县| 灵台县| 安达市| 梁河县| 沭阳县| 北安市| 云霄县| 闵行区| 普兰店市| 蚌埠市| 双流县| 西峡县| 南康市| 尚志市| 青冈县| 晋中市| 青川县| 贺州市| 芮城县| 屯门区| 会理县| 沙河市| 高要市| 巩义市| 应城市| 南通市| 裕民县| 乐陵市| 泾阳县| 江北区| 合川市| 乐亭县| 长葛市| 若尔盖县| 苏州市| 巴东县| 平利县| 石首市|