1. 程式人生 > >Redis(二):c#連線Redis

Redis(二):c#連線Redis

1、nuget StackExchange.Redis

2、建立RedisHelper類:

public class RedisHelper
    {
        /// <summary>
        /// 連線字串
        /// </summary>
        private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;
        /// <summary>
////// </summary> private readonly object _lock = new object(); /// <summary> /// 連線物件 /// </summary> private volatile IConnectionMultiplexer _connection; /// <summary> /// 資料庫 /// </summary> private IDatabase _db;
public RedisHelper() { _connection = ConnectionMultiplexer.Connect(ConnectionString); _db = GetDatabase(); } /// <summary> /// 獲取連線 /// </summary> /// <returns></returns> protected IConnectionMultiplexer GetConnection() {
if (_connection != null && _connection.IsConnected) { return _connection; } lock (_lock) { if (_connection != null && _connection.IsConnected) { return _connection; } if (_connection != null) { _connection.Dispose(); } _connection = ConnectionMultiplexer.Connect(ConnectionString); } return _connection; } /// <summary> /// 獲取資料庫 /// </summary> /// <param name="db"></param> /// <returns></returns> public IDatabase GetDatabase(int? db = null) { return GetConnection().GetDatabase(db ?? -1); } /// <summary> /// 設定 /// </summary> /// <param name="key"></param> /// <param name="data"></param> /// <param name="cacheTime">時間</param> public virtual void Set(string key, object data, int cacheTime) { if (data == null) { return; } var entryBytes = Serialize(data); var expiresIn = TimeSpan.FromMinutes(cacheTime); _db.StringSet(key, entryBytes, expiresIn); } /// <summary> /// 根據鍵獲取值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public virtual T Get<T>(string key) { var rValue = _db.StringGet(key); if (!rValue.HasValue) { return default(T); } var result = Deserialize<T>(rValue); return result; } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="serializedObject"></param> /// <returns></returns> protected virtual T Deserialize<T>(byte[] serializedObject) { if (serializedObject == null) { return default(T); } var json = Encoding.UTF8.GetString(serializedObject); return JsonConvert.DeserializeObject<T>(json); } /// <summary> /// 判斷是否已經設定 /// </summary> /// <param name="key"></param> /// <returns></returns> public virtual bool IsSet(string key) { return _db.KeyExists(key); } /// <summary> /// 序列化 /// </summary> /// <param name="data"></param> /// <returns>byte[]</returns> private byte[] Serialize(object data) { var json = JsonConvert.SerializeObject(data); return Encoding.UTF8.GetBytes(json); } }

3、檢視遠端Redis埠是否開放:

如果沒有開放的話,請修改Redis的conf檔案的bind:127.0.0.1 改為 bind 0.0.0.0