java .net 互通redis_在.Net下使用redis基于StackExchange.Redis

usingKuRuMi.Mio.DoMain.RedisCache.RedisCommon;usingStackExchange.Redis;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceKuRuMi.Mio.DoMain.RedisCache.RedisCaching

{///

///表示string的操作///

public classDoRedisStringCache : IRedisCaching

{private RedisBase redis = null;publicDoRedisStringCache()

{

redis= newRedisBase();

}#region 同步执行

///

///单个保存///

///

/// 值

/// 过期时间

///

public bool StringSet(string key, string val, TimeSpan? exp = default(TimeSpan?))

{

key=redis.AddKey(key);return redis.DoSave(db =>db.StringSet(key, val, exp));

}///

///保存多个key value///

/// 键值对

///

public bool StringSet(List>KeyVal)

{

List> newkey = KeyVal.Select(k => new KeyValuePair(redis.AddKey(k.Key), k.Value)).ToList();return redis.DoSave(db =>db.StringSet(newkey.ToArray()));

}///

///保存一个对象///

///

///

///

///

///

public bool StringSet(string key, T obj, TimeSpan? exp = default(TimeSpan?))

{

key=redis.AddKey(key);string json =redis.ConvertJson(obj);return redis.DoSave(db =>db.StringSet(key, json, exp));

}///

///获取单个///

///

///

public string StringGet(stringkey)

{

key=redis.AddKey(key);return redis.DoSave(db =>db.StringGet(key));

}///

///获取单个对象///

///

///

///

public T StringGet(stringkey) {

key=redis.AddKey(key);var val = redis.DoSave(db =>db.StringGet(key));return redis.ConvertObj(val);

}///

///为数字增长val///

///

/// 可以为负数

/// 增长后的值

public double StringIncrement(string key, double val = 1)

{

key=redis.AddKey(key);return redis.DoSave(db =>db.StringIncrement(key, val));

}///

///为数字减少val///

///

/// 可以为负数

/// 增长后的值

public double StringDecrement(string key, double val = 1)

{

key=redis.AddKey(key);return redis.DoSave(db =>db.StringDecrement(key, val));

}#endregion

#region 异步执行

///

///异步保存单个///

///

///

///

///

public async Task StringSetAsync(string key, string val, TimeSpan? exp = default(TimeSpan?))

{

key=redis.AddKey(key);return await redis.DoSave(db =>db.StringSetAsync(key, val, exp));

}///

///异步保存多个key value///

/// 键值对

///

public async Task StringSetAsync(List>KeyVal)

{

List> newkey = KeyVal.Select(k => new KeyValuePair(redis.AddKey(k.Key), k.Value)).ToList();return await redis.DoSave(db =>db.StringSetAsync(newkey.ToArray()));

}///

///异步保存一个对象///

///

///

///

///

///

public async Task StringSetAsync(string key, T obj, TimeSpan? exp = default(TimeSpan?))

{

key=redis.AddKey(key);string json =redis.ConvertJson(obj);return await redis.DoSave(db =>db.StringSetAsync(key, json, exp));

}///

///异步获取单个///

///

///

public async Task StringGetAsync(stringkey)

{

key=redis.AddKey(key);return await redis.DoSave(db =>db.StringGetAsync(key));

}///

///异步获取单个///

///

///

public async Task StringGetAsync(stringkey)

{

key=redis.AddKey(key);var val = await redis.DoSave(db =>db.StringGetAsync(key));return redis.ConvertObj(val);

}///

///异步为数字增长val///

///

/// 可以为负数

/// 增长后的值

public async Task StringIncrementAsync(string key, double val = 1)

{

key=redis.AddKey(key);return await redis.DoSave(db =>db.StringIncrementAsync(key, val));

}///

///为数字减少val///

///

/// 可以为负数

/// 增长后的值

public async Task StringDecrementAsync(string key, double val = 1)

{

key=redis.AddKey(key);return await redis.DoSave(db =>db.StringDecrementAsync(key, val));

}#endregion}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在项目中安装 `StackExchange.Redis` 包。可以通过NuGet包管理器或者在项目文件中手动添加引用来完成安装。 以下是使用依赖注入方式连接redis使用的示例代码: ```csharp // Startup.cs using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using StackExchange.Redis; public class Startup { private readonly IConfiguration _configuration; public Startup(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // 注册 Redis 连接对象 services.AddSingleton<IConnectionMultiplexer>(provider => { string redisConnectionString = _configuration.GetConnectionString("RedisConnection"); return ConnectionMultiplexer.Connect(redisConnectionString); }); // 注册 Redis 数据库操作对象 services.AddScoped<IDatabase>(provider => { IConnectionMultiplexer redisConnection = provider.GetService<IConnectionMultiplexer>(); return redisConnection.GetDatabase(); }); // 注册其他服务 // ... } } ``` 在上面的示例代码中,我们首先注册了一个 `IConnectionMultiplexer` 类型的单例对象,该对象用于连接 Redis 数据库。然后,我们注册了一个 `IDatabase` 类型的对象,该对象用于操作 Redis 数据库中的数据。在注册 `IDatabase` 对象时,我们使用了 `AddScoped` 方法,这意味着每次请求都会创建一个新的 `IDatabase` 对象。 在代码中,我们还使用了 `IConfiguration` 对象来获取 Redis 数据库的连接字符串。我们需要在项目的 `appsettings.json` 文件中添加一个名为 `RedisConnection` 的连接字符串,例如: ```json { "ConnectionStrings": { "RedisConnection": "localhost:6379" } } ``` 有了上面这些注册之后,我们就可以在需要使用 Redis 数据库的服务中注入 `IDatabase` 对象了,例如: ```csharp // MyService.cs using StackExchange.Redis; public class MyService { private readonly IDatabase _redisDatabase; public MyService(IDatabase redisDatabase) { _redisDatabase = redisDatabase; } public void SetData(string key, string value) { _redisDatabase.StringSet(key, value); } public string GetData(string key) { return _redisDatabase.StringGet(key); } } ``` 在上面的示例代码中,我们注入了 `IDatabase` 对象,并在 `SetData` 和 `GetData` 方法中使用该对象进行 Redis 数据库的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值