using Fast.NetCore.Web.Interface;
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Fast.NetCore.Web.Helper
{
public class RedisServiceHelp : IRedisService
{
private string _redisConnection { get; set; }
public RedisServiceHelp()
{
_redisConnection = "127.0.0.1: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 = 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;
}
}
}