https://github.com/MSOpenTech/redis/releasesクライアントをダウンロードしてください1.。クライアントhttps://www.runoob.com/redis/redis-install.htmlをインストール
2.リファレンスhttps://www.cnblogs.com/LiChen19951127/p/10478153.html
3.独自の実行
①NugetインストールStackExchange.Redisの
②redishelper
システム使用して、
使用してSystem.Collections.Generic;
使用Microsoft.Extensions.Logging。
StackExchange.Redisを使用しました。
Newtonsoft.Jsonを使用しました。
WebApplication1と名前空間
{
publicクラスRedisHelperNetCore
{
//シングルトン
のpublic static GET RedisCommonデフォルトは{{)(新しい新しいRedisCommonを返す;}}
パブリック静的のGET RedisCommon一つは{{新しい新RedisCommon(1、 "127.0.0.1:6379")を返します;} }
パブリック静的GET RedisCommonつ{{(2、 "127.0.0.1:6379")新しい新しいRedisCommonを返す;}}
}
///
///操作のRedisのクラスの
古いバージョンと///はServiceStack.Redisあります。
パケットnugetの///ネットコアStackExchange.Redis利用
///
publicクラスRedisCommon
{
//パブリック静的ILoggerですログイン= UtilLogger.Log;ロギングは//
//は、データベース接続文字列をRedisの
文字列_conn = AppConfigurtaionServices.Configurationプライベート[「RedisConfig:ReadWriteHosts」] ??「127.0.0.1:6379」;
プライベート_db int型= 0;
//静的変数の各モジュールは、別のインスタンスに同じリンク使用していることを確実にする
プライベート静的のConnectionMultiplexer接続を。
RedisCommon公開(){}
///
///コンストラクタ
///
///
///
公共RedisCommon(INT DB、ストリングconnectStr)
{
_conn = connectStr;
_db = DB;
}
///
///キャッシュデータベースデータベース接続
///
公共ConnectionMultiplexer CacheConnection
{
GET
{
試み
{
IF(接続== nullの||!connection.IsConnected)
{
レイジー新しい新しい接続=(()=> ConnectionMultiplexer.Connect(_conn))値;
}
}
キャッチ(例外EX)
{
//Log.LogError("RedisHelper->CacheConnectionエラー\ R \ n「+ ex.ToString( ) );
戻りNULL;
}
戻り接続;
}
}
///
///キャッシュデータベース
///
公共CacheRedisするIDatabase => CacheConnection.GetDatabase(_db)。
#region --KEY/VALUE存取--
/// <summary>
/// 单条存值
/// </summary>
/// <param name="key">key</param>
/// <param name="value">The value.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
public bool StringSet(string key, string value)
{
return CacheRedis.StringSet(key, value);
}
/// <summary>
/// 保存单个key value
/// </summary>
/// <param name="key">Redis Key</param>
/// <param name="value">保存的值</param>
/// <param name="expiry">过期时间</param>
/// <returns></returns>
public bool StringSet(string key, string value, TimeSpan? expiry = default(TimeSpan?))
{
return CacheRedis.StringSet(key, value, expiry);
}
/// <summary>
/// 保存多个key value
/// </summary>
/// <param name="arr">key</param>
/// <returns></returns>
public bool StringSet(KeyValuePair<RedisKey, RedisValue>[] arr)
{
return CacheRedis.StringSet(arr);
}
/// <summary>
/// 批量存值
/// </summary>
/// <param name="keysStr">key</param>
/// <param name="valuesStr">The value.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
public bool StringSetMany(string[] keysStr, string[] valuesStr)
{
var count = keysStr.Length;
var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
for (int i = 0; i < count; i++)
{
keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]);
}
return CacheRedis.StringSet(keyValuePair);
}
/// <summary>
/// 保存一个对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="obj"></param>
/// <returns></returns>
public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default(TimeSpan?))
{
string json = JsonConvert.SerializeObject(obj);
return CacheRedis.StringSet(key, json, expiry);
}
/// <summary>
/// 追加值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void StringAppend(string key, string value)
{
////追加值,返回追加后长度
long appendlong = CacheRedis.StringAppend(key, value);
}
/// <summary>
/// 获取单个key的值
/// </summary>
/// <param name="key">Redis Key</param>
/// <returns></returns>
public RedisValue GetStringKey(string key)
{
return CacheRedis.StringGet(key);
}
/// <summary>
/// 根据Key获取值
/// </summary>
/// <param name="key">键值</param>
/// <returns>System.String.</returns>
public string StringGet(string key)
{
try
{
return CacheRedis.StringGet(key);
}
catch (Exception ex)
{
//Log.LogError("RedisHelper->StringGet 出错\r\n" + ex.ToString());
return null;
}
}
/// <summary>
/// 获取多个Key
/// </summary>
/// <param name="listKey">Redis Key集合</param>
/// <returns></returns>
public RedisValue[] GetStringKey(List<RedisKey> listKey)
{
return CacheRedis.StringGet(listKey.ToArray());
}
/// <summary>
/// 批量获取值
/// </summary>
public string[] StringGetMany(string[] keyStrs)
{
var count = keyStrs.Length;
var keys = new RedisKey[count];
var addrs = new string[count];
for (var i = 0; i < count; i++)
{
keys[i] = keyStrs[i];
}
try
{
var values = CacheRedis.StringGet(keys);
for (var i = 0; i < values.Length; i++)
{
addrs[i] = values[i];
}
return addrs;
}
catch (Exception ex)
{
//Log.LogError("RedisHelper->StringGetMany 出错\r\n" + ex.ToString());
return null;
}
}
/// <summary>
/// 获取一个key的对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
public T GetStringKey<T>(string key)
{
return JsonConvert.DeserializeObject<T>(CacheRedis.StringGet(key));
}
#endregion
#region --删除设置过期--
/// <summary>
/// 删除单个key
/// </summary>
/// <param name="key">redis key</param>
/// <returns>是否删除成功</returns>
public bool KeyDelete(string key)
{
return CacheRedis.KeyDelete(key);
}
/// <summary>
/// 删除多个key
/// </summary>
/// <param name="keys">rediskey</param>
/// <returns>成功删除的个数</returns>
public long KeyDelete(RedisKey[] keys)
{
return CacheRedis.KeyDelete(keys);
}
/// <summary>
/// 判断key是否存储
/// </summary>
/// <param name="key">redis key</param>
/// <returns></returns>
public bool KeyExists(string key)
{
return CacheRedis.KeyExists(key);
}
/// <summary>
/// 重新命名key
/// </summary>
/// <param name="key">就的redis key</param>
/// <param name="newKey">新的redis key</param>
/// <returns></returns>
public bool KeyRename(string key, string newKey)
{
return CacheRedis.KeyRename(key, newKey);
}
/// <summary>
/// 删除hasekey
/// </summary>
/// <param name="key"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public bool HaseDelete(RedisKey key, RedisValue hashField)
{
return CacheRedis.HashDelete(key, hashField);
}
/// <summary>
/// 移除hash中的某值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="dataKey"></param>
/// <returns></returns>
public bool HashRemove(string key, string dataKey)
{
return CacheRedis.HashDelete(key, dataKey);
}
/// <summary>
/// 设置缓存过期
/// </summary>
/// <param name="key"></param>
/// <param name="datetime"></param>
public void SetExpire(string key, DateTime datetime)
{
CacheRedis.KeyExpire(key, datetime);
}
#endregion
}
}
③カプセル化クラスは、設定ファイルを読み込み
、使用Microsoft.Extensions.Configuration
使用Microsoft.Extensions.Configuration.Json;
パブリッククラスAppConfigurtaionServices
{
パブリック静的IConfigurationを設定{GET、SET;}
静的AppConfigurtaionServices()
{
trueに// ReloadOnChange場合= appsettings.jsonリロード修正される
構成新しい新しいConfigurationBuilder =()
.Add(新しい新しいJsonConfigurationSourceパス= {真ReloadOnChangeに"appsettings.json"、=})
.build();
}}
④appsetting.json設定
// Redisの分散キャッシュ
"RedisConfig":{
//キャッシュ1 0なし開くかどうかを
"IsOpenCache": "0"、
"ReadWriteHosts": "127.0.0.1:6379,password=123456"、
「ReadOnlyHostsを":" 127.0.0.1:6379,password=123456 "
}
⑤試験コール
パブリックIActionResultインデックス()
{
#region -テストredis-
VAR A = RedisHelperNetCore.Default.StringSet(" Redisの"" Redisの「+ DateTime.Now 、TimeSpan.FromSeconds(1000000));
VAR B = RedisHelperNetCore.Default.StringGet( "Redisの");
// VAR C = RedisHelper.Default.KeyDelete( "Redisの");
#endregionの
リターンビュー();
}