Exemplo n.º 1
0
        private void DoUpdateChangeKey(RedisClient client, string setId, object keyByte, byte[] values, bool isHash, byte[] buffer)
        {
            string key = isHash
                ? Encoding.UTF8.GetString((byte[])keyByte)
                : keyByte.ToString();
            dynamic entity = null;
            try
            {
                entity = CovertEntityObject(key, values);
                CacheType cacheType = CacheType.None;
                if (entity != null)
                {
                    SchemaTable schema;
                    Type entityType = entity.GetType();
                    if (!EntitySchemaSet.TryGet(entityType, out schema))
                    {
                        EntitySchemaSet.InitSchema(entityType);
                    }
                    if (schema != null || EntitySchemaSet.TryGet(entityType, out schema))
                    {
                        cacheType = schema.CacheType;
                    }
                    if (cacheType != CacheType.None)
                    {
                        string redisKey = cacheType == CacheType.Dictionary
                            ? key.Split('|')[0]
                            : key.Split('_')[0];

                        using (IDataSender sender = DataSyncManager.GetRedisSender(schema, redisKey))
                        {
                            sender.Send(entity);

                        }
                    }

                }
            }
            catch (Exception ex)
            {
                TraceLog.WriteError("ChangeKey:{0} error:{1}", key, ex);
            }
            if (isHash)
            {
                client.HDel(setId, (byte[])keyByte);
            }
            else
            {
                client.ZRem(setId, buffer);
            }
            if (entity != null)
            {
                Type type = entity.GetType();
                string entityKey = string.Format("{0},{1}", key, type.Assembly.GetName().Name);
                client.HSet("__GLOBAL_SQL_CHANGE_KEYS_NEW", Encoding.UTF8.GetBytes(entityKey), new byte[] { 1 });
            }

        }
Exemplo n.º 2
0
 private bool DoWriteToDb(RedisClient redisClient, byte[] buffer)
 {
     SqlStatement statement = null;
     try
     {
         statement = ProtoBufUtils.Deserialize<SqlStatement>(buffer);
         if (statement != null)
         {
             var dbProvider = DbConnectionProvider.CreateDbProvider("", statement.ProviderType, statement.ConnectionString);
             if (dbProvider != null)
             {
                 var paramList = ConvertParam(dbProvider, statement.Params);
                 dbProvider.ExecuteQuery(statement.CommandType, statement.CommandText, paramList);
                 redisClient.ZRem(_setId, buffer);
                 return true;
             }
         }
         _errorCount++;
         return false;
     }
     catch (Exception ex)
     {
         _errorCount++;
         try
         {
             if (removeCheckBox.Checked)
             {
                 redisClient.ZRem(_setId, buffer);
             }
         }
         catch
         {
         }
         if (statement != null)
         {
             try
             {
                 msgListBox.Items.Add(string.Format("pos:{0}, error:{1}", _currentIndex, ex.Message));
                 TraceLog.WriteError("WriteToDb:{0}\r\n{1}\r\nParam:{2}",
                     ex.Message,
                     statement.CommandText,
                     GetParamToString(statement.Params));
             }
             catch
             {
             }
         }
         return false;
     }
 }