.Net Core Redis使用
Redis作为NoSQL数据库,在很多项目场景中使用到。本文主要讲解如何在dotNet Core的环境下使用Redis进行项目开发。
项目环境
- dot net Core 2.2
- StackExchang.Redis 2.1.30
Redis 使用
- 1.新建项目,创建类库
- 2.创建Redis 接口,此处命名为IRedisService
/// <summary>
/// Redis 接口
/// </summary>
public interface IRedisService
{
/// <summary>
/// Redis get命令
/// </summary>
/// <param name="key"> 键</param>
/// <returns></returns>
dynamic GetRedisValue(string key);
/// <summary>
/// Redis set 命令
/// </summary>
/// <param name="key"> 键</param>
/// <param name="value">值</param>
/// <returns></returns>
bool SetRedisValue(dynamic key, dynamic value);
/// <summary>
/// Redis set 命令 设置过期时间 ttl
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="time"></param>
/// <returns></returns>
bool SetRedisValue(dynamic key, dynamic value, TimeSpan time);
/// <summary>
/// Redis 获取字符串类型的key
/// </summary>
/// <param name="key"> 字符串类型的key</param>
/// <returns></returns>
dynamic GetRedisStringValue(string key);
/// <summary>
/// Redis 设置字符串类型的过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="time"></param>
/// <returns></returns>
bool SetRedisStringValue(string key, string value, TimeSpan time);
/// <summary>
/// 删除key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
bool RemoveRedisValue(string key);
/// <summary>
/// 存储字符串key-value到指定的redis数据库中
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="dbNumber"></param>
/// <returns></returns>
bool SetRedisStringValueToSelectDb(string key, string value, int dbNumber = -1);
/// <summary>
/// 存储字符串key-value到指定的redis数据库中
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="dbNumber">数据库编号</param>
/// <param name="time">过期时间</param>
/// <returns></returns>
bool SetRedisStringValueTimeSpanToSelectDb(string key, string value, TimeSpan time, int dbNumber = -1);
/// <summary>
/// 指定数据库中获取指定key的value
/// </summary>
/// <param name="key">字符串类型键</param>
/// <param name="dbNumber">数据库编码 默认-1</param>
/// <returns></returns>
dynamic GetRedisValueSelectDb(string key,int dbNumber = -1);
/// <summary>
/// 指定数据库中删除指定key的value
/// </summary>
/// <param name="key">键</param>
/// <param name="dbNumber">数据库编码 默认-1</param>
/// <returns></returns>
bool DeleteRedisValueSelectDb(string key, int dbNumber = -1);
/// <summary>
/// 指定Redis数据库修改key的value
/// </summary>
/// <param name="key"></param>
/// <param name="dbNumber"></param>
/// <returns></returns>
bool EditRedisStringValueSelectDb(string key, string value, int dbNumber = -1);
}
- 3.创建Redis类,此处命名为RedisServiceHelp
public class RedisServiceHelp : IRedisService
{
private string _redisConnection {get;set;}
public RedisServiceHelp()
{
_redisConnection = "192.168.2.**:6379,password=,allowadmin=true,ConnectTimeout=65535,syncTimeout=65535";
}
public dynamic GetRedisStringValue(string key)
{
dynamic ret = null;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
var newobj = db.StringGet(key, CommandFlags.None);
ret = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(newobj);
}
}
catch (Exception ex)
{
ret = null;
}
return ret;
}
public dynamic GetRedisValue(string key)
{
dynamic ret = null;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
var newobj = db.StringGet(key, CommandFlags.None);
ret = (dynamic)(newobj);
}
}
catch (Exception ex)
{
ret = null;
}
return ret;
}
public bool RemoveRedisValue(string key)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
ret = db.KeyDelete(key);
}
}
catch (Exception ex)
{
}
return ret;
}
public bool SetRedisStringValue(string key, string value, TimeSpan time)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
ret = db.StringSet(key, value, time);
}
}
catch (Exception ex)
{
}
return ret;
}
public bool SetRedisValue(dynamic key, dynamic value)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
ret = db.StringSet(key, Newtonsoft.Json.JsonConvert.SerializeObject(value));
}
}
catch (Exception ex)
{
}
return ret;
}
public bool SetRedisValue(dynamic key, dynamic value, TimeSpan time)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase();
ret = db.StringSet(key, Newtonsoft.Json.JsonConvert.SerializeObject(value), time);
}
}
catch (Exception ex)
{
}
return ret;
}
public bool SetRedisStringValueToSelectDb(string key, string value, int dbNumber = -1)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase(dbNumber);
ret = db.StringSet(key, Newtonsoft.Json.JsonConvert.SerializeObject(value));
}
}
catch (Exception)
{
throw;
}
return ret;
}
public bool SetRedisStringValueTimeSpanToSelectDb(string key, string value, TimeSpan time, int dbNumber = -1)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase(dbNumber);
ret = db.StringSet(key, Newtonsoft.Json.JsonConvert.SerializeObject(value), time);
}
}
catch (Exception)
{
throw;
}
return ret;
}
public dynamic GetRedisValueSelectDb(string key, int dbNumber = -1)
{
dynamic ret = null;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase(dbNumber);
var newobj = db.StringGet(key, CommandFlags.None);
ret = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(newobj);
}
}
catch (Exception)
{
ret = null;
}
return ret;
}
public bool DeleteRedisValueSelectDb(string key, int dbNumber = -1)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase(dbNumber);
ret = db.KeyDelete(key);
}
}
catch (Exception)
{
ret = false;
}
return ret;
}
public bool EditRedisStringValueSelectDb(string key,string value, int dbNumber = -1)
{
var ret = false;
try
{
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_redisConnection))
{
IDatabase db = redis.GetDatabase(dbNumber);
ret = db.StringSet(key, Newtonsoft.Json.JsonConvert.SerializeObject(value));
}
}
catch (Exception)
{
throw;
}
return ret;
}
}
- 5.调用使用RedisServiceHelp 即可