Redisのパブリックメソッドリファレンス.NET StackExchange.Redis

パブリッククラスRedisManager
{
プライベート静的IConnectionMultiplexer _connMultiplexer。
プライベート静的な文字列のConnectionNameの。
パブリック静的辞書<文字列、RedisConfig> RedisConfigs。

静的RedisManager()
{
RedisConfigs =新しい辞書<文字列、RedisConfig>();
LoadConfig();
}
/// <要約>
///获取连接信息
/// </要約>
プライベート静的ボイドLoadConfig()
{
常にXmlDocument XML =新規のXmlDocument()。
なく、XML.load(AppDomain.CurrentDomain.BaseDirectory + "/Configs/Redis.config");
いるXmlNodeList XMLNodeの= xml.SelectSingleNode( "設定")SELECTSINGLENODE( "redisConfigs")のChildNodes。。。
foreachの(XMLNodeの中のXmlNodeアイテム)
{
RedisConfig設定=新しいRedisConfig()
{
CONFIGNAME = item.Attributes [ "のconfigname"]。値、
コネクション= item.Attributes [ "接続"]。値
DefaultDatabase = Convert.ToInt32(item.Attributes [ "defaultDatabase"]の値。)、
のInstanceName = item.Attributes [ "instanceNameの"]の値。
}。
RedisConfigs.Add(config.Configname、設定)
}
}

ConfigurationOptionsオプション静的パブリック
{
GET
{
VAR = ConfigurationOptions.Parseオプション(RedisConfigs [ConnectionNameの】.Connection);
options.AbortOnConnectFail = falseに、
options.ConnectTimeout = 1000; //接続操作がタイムアウト(MS)
options.SyncTimeout = 1000; //時間(ミリ秒)を可能にする同期動作
options.ConnectRetry = 3; //接続の数リトライ
リターンオプション;
}
}

/// <要約>
///设置Redisの中的キー
/// </要約>
/// <PARAM NAME = "キー">は、</ param>の
/// <リターン> </リターン>
プライベート静的文字列GetKeyForRedis (文字列キー)
{
RedisConfigs [ConnectionNameの】.InstanceName +キーを返します。
}

/// <要約>
///写入带有过期时间的Redisの缓存信息
/// </要約>
/// <PARAM NAME = "connName"> </ param>の
/// <PARAM NAME = "キー"> </ param>の
/// <PARAM NAME ="値"> </ param>の
/// <PARAM NAME =" expiresTime "> </ param>の
/// <リターン> </リターン>
のpublic static BOOLセット(文字列connName、文字列キー、オブジェクトの値、日時expiresTime)
{
ConnectionNameの= connName。
使用(VARクライアント= ConnectionMultiplexer.Connect(オプション))
{
のTimeSpan時間= expiresTime - DateTime.Now。
(string.IsNullOrEmpty(キー))なら
、{
falseを返します。
}
client.GetDatabase(RedisConfigs [ConnectionNameの】.DefaultDatabase).StringSet(GetKeyForRedis(キー)、JsonHelper.ObjectToJson(値)、時間)を返します。
}
}

/// <要約>
///写入不带缓存时间的Redisの缓存信息
/// </要約>
/// <PARAM NAME = "connName"> </ param>の
/// <PARAM NAME = "キー"> </ PARAM>
/// <PARAM名="値"> </ PARAM>
/// <戻る> </戻り>
パブリック静的ブールセット(文字列connName、文字列キー、オブジェクト値)
{
ConnectionNameの= connName。
使用して(VARクライアント= ConnectionMultiplexer.Connect(オプション))
{
場合(string.IsNullOrEmpty)(キー)
{
falseを返します。
}
戻りclient.GetDatabase(RedisConfigs [ConnectionNameの】.DefaultDatabase).StringSet(GetKeyForRedis(キー)、JsonHelper.ObjectToJson(値))。
}
}

/// <要約>
///获取指定对象的缓存信息
/// </要約>
/// <typeparam名= "T"> </ typeparam>
/// <PARAM NAME = "connName"> </ PARAM>
/// <PARAM NAME = "キー"> </ PARAM>
/// <> </リターンを返し>
パブリック静的T GetValueメソッド<T>(文字列connName、文字列キー)ここで、T:クラス
{
ConnectionNameの= connName。
使用して(VARクライアント= ConnectionMultiplexer.Connect(オプション))
{
場合(string.IsNullOrEmpty(キー))
{
リターンデフォルト(T);
}
文字列値= client.GetDatabase(RedisConfigs [ConnectionNameの】.DefaultDatabase).StringGet(GetKeyForRedis(キー))。
(文字列の場合。
IsNullOrEmpty(値)) {
戻りデフォルト(T)。
}
JsonConvert.DeserializeObject <T>(値)を返します。
}
}

/// <要約>
///获取缓存字符串
/// </要約>
/// <PARAM NAME = "connName"> </ param>の
/// <PARAM NAME = "キー"> </ param>の
/// <戻る> </戻り>
パブリック静的文字列GetValueメソッド(文字列connName、文字列キー)
{
ConnectionNameの= connName。
使用(VARクライアント= ConnectionMultiplexer.Connect(オプション))
{
(string.IsNullOrEmpty)(キー)場合
、{
String.Emptyをを返します。
}
文字列値= client.GetDatabase(RedisConfigs [ConnectionNameの】.DefaultDatabase).StringGet(GetKeyForRedis(キー))。
(string.IsNullOrEmpty(値))であれば
{
String.Emptyをを返します。
}
戻り値。
}
}

/// <要約>
///按照キー删除指定的缓存信息
/// </要約>
/// <PARAM NAME = "connName"> </ param>の
/// <PARAM NAME = "キー"> < / PARAM>
/// <戻る> </戻り>
パブリック静的BOOL削除(列connName、文字列キー)
{
ConnectionNameの= connName。
(VARクライアント= ConnectionMultiplexer.Connect(オプション))を用いて、
{
client.GetDatabase(RedisConfigs [ConnectionNameの】.DefaultDatabase).KeyDelete(GetKeyForRedis(キー))を返します。
}
}


非同期System.Threading.Tasks.Task RemoveByKeyExAsync静的パブリック(CONNAME文字、文字列keyEx)
{
VAR =コネチカットザはConnectionMultiplexer.ConnectAsync(RedisConfigs [CONNAME] .Connection)を待つ;
//取得DBの
VARのDB = conn.GetDatabase(RedisConfigs [CONNAME] .DefaultDatabase);
横切る//サーバクラスタ
のforeachを(VARエンドポイントconn.GetEndPointsに())
{
//指定したサーバ取得
VAR = conn.GetServerサーバ(エンドポイント);
//キーまたは横断する指定されたサーバー上でスキャンコマンドを使用してキー
のforeach(server.KeysにおけるVARキー(RedisConfigs [CONNAME] .DefaultDatabase))
{
文字列startKey = GetKeyForRedis(keyEx);
文字列redisKey key.toString =();
//キー値を求める
場合(redisKey.StartsWith(startKey )){
db.KeyDelete(redisKey)。
}

}
}

conn.Dispose();
}


パブリック静的リスト<ストリング> GetAllKeysByKeyPrefix(ストリングCONNAME、列keyEx)
{
ConnectionNameの= CONNAME。
一覧<文字列> keysList =新しいリスト<文字列>();

ConnectionMultiplexer.Connectコネチカット= VAR(RedisConfigs [ConnectionNameの】.Connection);

横切る//サーバクラスタ
のforeach(VAR conn.GetEndPointsエンドポイントを、())
{
//指定したサーバ取得
VAR = conn.GetServerサーバー(エンドポイント);
//横断するように指定されたサーバー上のキーを使用するか、スキャンコマンドキー
のforeach(server.Keys(RedisConfigs [ConnectionNameの】.DefaultDatabase)におけるVARキー)
{
;列StartKey = GetKeyForRedis(keyEx)
文字列redisKey key.toString =(;
//取得キー値の
IF(redisKey.StartsWith(StartKey))
{
keysList.Add(redisKey);
}

}
}
conn.Dispose()。
keysListを返します。

}


パブリック静的文字列GetKeysByOpenID(列CONNAME、文字列のOpenID)
{

リストの<string> keysList =新しいリストの<string>();

VAR CONN = ConnectionMultiplexer.Connect(RedisConfigs [CONNAME] .Connection)。

//サーバークラスタは、トラバース
foreachの(VARエンドポイントは、conn.GetEndPointsに())
{
//指定されたサーバーの取得
; VAR = conn.GetServerサーバー(エンドポイント)
//キーまたはキー横断する指定されたサーバー上でスキャンコマンドを使用して
foreachのを(VARをserver.Keysキーの(RedisConfigs [CONNAME] .DefaultDatabase))
{

文字列redisKey key.toString =();
//のキー値取得
IFを(redisKey.Contains(OpenIDの))
{
conn.Dispose();
redisKeyを返します。
}

}
}
conn.Dispose()。
「」を返します。

}

}

/// <要約>
/// Redisの配置
/// </要約>
パブリッククラスRedisConfig
{
/// <要約>
///配置名称
/// </要約>
パブリックストリングCONFIGNAME {得ます。セットする; }

/// <まとめ>
///接続アドレス
/// </要約>
パブリック文字列接続取得または設定;}

/// <まとめ>
///接続されたデータベースインデックス
/// </要約>
公共のINT {DefaultDatabase取得または設定し}

/// <要約>
///前缀
/// </要約>
公共の文字列のInstanceName {取得します。セットする; }
}

おすすめ

転載: www.cnblogs.com/xiaoyao123/p/11579615.html