using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CommonObj.common { public class redisConnection { public int DB_INDEX_PARAM_CAMPAIGN { get; } public int DB_INDEX_TOKEN { get; } public int DB_INDEX_BLACKLIST { get; } public int DB_INDEX_DATA_USER { get; } public int DB_INDEX_DATA_TICKET_UNIQUE_BUY { get; } public int DB_INDEX_DATA_TICKET_UNIQUE_FREE { get; } public int DB_INDEX_DATA_TICKET_SEARCH { get; } public int TOKEN_TIMEOUT_DEFAULT { get; } public string ip { get; set; } public string port { get; set; } public string pass { get; set; } public ConnectionMultiplexer redis { get; set; } public IDatabase database { get; set; } public string REDIS_SYN_TICKET_STATUS { get; } public string REDIS_IS_RUNNING { get; } public string REDIS_IS_CHECK_TICKET_DB { get; } public redisConnection(string _ip,string _port,string _pass) { DB_INDEX_PARAM_CAMPAIGN = 0; DB_INDEX_TOKEN = 1; DB_INDEX_BLACKLIST = 2; DB_INDEX_DATA_USER = 3; //Khi mua ve se khoa tam thoi x phut. Se bi xoa neu ko confirm sau x phut DB_INDEX_DATA_TICKET_UNIQUE_BUY = 4; //Luu lai cac ve so da duoc mua roi, DB_INDEX_DATA_TICKET_UNIQUE_FREE= 5; //Luu lai cac ve free, chua ai mua DB_INDEX_DATA_TICKET_SEARCH = 6;//Luu ket qua seach, co phan trang TOKEN_TIMEOUT_DEFAULT = 600000000; REDIS_SYN_TICKET_STATUS = "REDIS_SYN_TICKET_STATUS"; //0= la ko dang syn (chop phep mua ve),1=Yeu cau syn ticket,2=dang syn REDIS_IS_RUNNING = "REDIS_IS_RUNNING"; //1= dang chay binh thuong,0= khong chay binh thuong REDIS_IS_CHECK_TICKET_DB = "REDIS_IS_CHECK_TICKET_DB"; //0= khong check DB(chi check redis),1= ngoai check redis con check ca DB this.ip = _ip; this.port = _port; this.pass = _pass; //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("192.168.1.5:6379,password=mypassword"); } public bool connet() { bool _reuslt = true; try { redis = ConnectionMultiplexer.Connect(this.ip + ":" + this.port + ",password=" + this.pass+ ",allowAdmin=true"); } catch (Exception) { _reuslt = false; } return _reuslt; } public void close() { try { redis.Close(); } catch (Exception) { } } public bool isConnet() { try { if (redis == null) return false; if (redis.IsConnected) return true; else return false; } catch (Exception) { return false; } } public bool Ping(int dbIndex) { try { database = redis.GetDatabase(dbIndex); if (database.Ping().TotalSeconds > 5) { return false; } else { return true; } } catch (Exception) { return false; } } public bool existsByKey(int dbIndex, string key) { try { database = redis.GetDatabase(dbIndex); return database.KeyExists(key); } catch (Exception) { return false; } } public string getByKey(int dbIndex,string key) { try { database = redis.GetDatabase(dbIndex); return database.StringGet(key); } catch (Exception) { return null; } } public void setByKey(int dbIndex, string key,string values) { try { database = redis.GetDatabase(dbIndex); database.StringSet(key,values); } catch (Exception) { } } public void setByKeyAsync(int dbIndex, string key, string values) { try { database = redis.GetDatabase(dbIndex); database.StringSetAsync(key, values); } catch (Exception) { } } public void setByKey(int dbIndex, string key, string values,TimeSpan t) { try { database = redis.GetDatabase(dbIndex); database.StringSet(key, values,t); } catch (Exception) { } } public void setKeyTimeOut(int dbIndex, string key, TimeSpan t) { try { database = redis.GetDatabase(dbIndex); database.KeyExpire(key, t); } catch (Exception) { } } public void setTimeOutAllkeyByPattern(int dbIndex, string _pattern, TimeSpan t) { try { IServer server = redis.GetServer(this.ip + ":" + this.port); database = redis.GetDatabase(dbIndex); var keys = server.Keys(dbIndex, pattern: _pattern + "*"); foreach (var k in keys) { database.KeyExpire(k, t); } } catch (Exception ex) { } } public void delByKey(int dbIndex, string key) { try { database = redis.GetDatabase(dbIndex); database.KeyDelete(key); } catch (Exception) { } } public void delByKeyAsync(int dbIndex, string key) { try { database = redis.GetDatabase(dbIndex); database.KeyDeleteAsync(key); } catch (Exception) { } } public void delAllkeyByPattern(int dbIndex, string _pattern) { try { IServer server = redis.GetServer(this.ip + ":" + this.port); database = redis.GetDatabase(dbIndex); var keys = server.Keys(dbIndex, pattern: _pattern + "*"); foreach (var k in keys) { database.KeyDelete(k); } } catch (Exception ex) { } } /* public void getAllkey(int dbIndex, string key) { try { database = redis.GetDatabase(dbIndex); database.StringSet(); } catch (Exception) { } } */ public List getAllkeyByPattern(int dbIndex,string _pattern) { List _result = new List() ; try { IServer server = redis.GetServer(this.ip + ":" + this.port); var keys = server.Keys(dbIndex,pattern: _pattern+"*"); foreach (var k in keys) { _result.Add(k); } return _result; } catch (Exception ex) { return null; } } public List getAllkeyByPatternRegex(int dbIndex, string _pattern) { List _result = new List(); try { IServer server = redis.GetServer(this.ip + ":" + this.port); var keys = server.Keys(dbIndex, pattern: _pattern); foreach (var k in keys) { _result.Add(k); } return _result; } catch (Exception ex) { return null; } } public long getSizeDatabase(int dbIndex) { long result= 0; try { IServer server = redis.GetServer(this.ip + ":" + this.port); result=server.DatabaseSize(dbIndex); } catch (Exception ex) { int a = 0; } return result; } public void clearAllDatabase() { try { IServer server = redis.GetServer(this.ip + ":" + this.port); server.FlushAllDatabases(); } catch (Exception ex) { int a = 0; } } public void clearIdxDatabase(int dbIndex) { try { IServer server = redis.GetServer(this.ip + ":" + this.port); server.FlushDatabase(dbIndex); } catch (Exception ex) { int a = 0; } } } }