C#使用CSRedisCore的實(shí)現(xiàn)示例
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ù)庫獲取
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ù)庫prefix: 鍵前綴poolsize: 連接池大小ssl: 是否使用 SSLwriteBuffer: 寫入緩沖區(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)文章
WPF+ASP.NET SignalR實(shí)現(xiàn)動(dòng)態(tài)折線圖的繪制
這篇文章將以一個(gè)簡(jiǎn)單的動(dòng)態(tài)折線圖示例,簡(jiǎn)述如何通過ASP.NET SignalR實(shí)現(xiàn)后臺(tái)通知功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01
結(jié)合Visual C#開發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱
這篇文章主要介紹了C#中事件的訂閱和取消訂閱,結(jié)合Visual C#開發(fā)環(huán)境來進(jìn)行講解,Visual C#被集成在微軟的IDE程序Visual Studio中,需要的朋友可以參考下2016-01-01
細(xì)說C#中的枚舉:轉(zhuǎn)換、標(biāo)志和屬性
枚舉是 C# 中最有意思的一部分,大部分開發(fā)人員只了解其中的一小部分,甚至網(wǎng)上絕大多數(shù)的教程也只講解了枚舉的一部分。那么,我將通過這篇文章向大家具體講解一下枚舉的知識(shí),需要的朋友可以參考下2020-02-02
C#將html table 導(dǎo)出成excel實(shí)例
C#將html table 導(dǎo)出成excel實(shí)例,需要的朋友可以參考一下2013-04-04
C#中GraphicsPath的Warp方法用法實(shí)例
這篇文章主要介紹了C#中GraphicsPath的Warp方法用法,實(shí)例分析了Warp方法的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06
C#中DataTable實(shí)現(xiàn)篩選查詢的示例
本文主要介紹了C#中DataTable實(shí)現(xiàn)篩選查詢的示例,主要是DataTable進(jìn)行過濾篩選,常用的一些方法為:Select,dataview,具有一定的參考價(jià)值,感興趣的可以了解一下2023-04-04

