Je suis un peu nouveau chez Redis et je suis en train de l'évaluer. J'utilise le serveur Redis d'ici: https://github.com/downloads/dmajkic/redis/redis-2.4.5-win32-win64.zipClient Redis/ServiceStack Transactions exception
Je suis également en utilisant la configuration suivante pour le serveur:
Port 6379 délai d'attente de 300 sauver 900 1 sauver 300 10 sauver 60 10000 LogLevel debug logfile stdout bases de données 1 MaxClients 32 MaxMemory 2147483648
Je suis en train d'exécuter du code comme ce client l'utilisation de ServiceStack (ServiceStack-ServiceStack.Redis-4add28 a)
Voici mon code
public void InsertInsideTransaction(bool shouldTransactionRollback)
{
RedisClient transClient = new RedisClient("localhost");
ClearAll();
using (var trans = transClient.CreateTransaction())
{
trans.QueueCommand(r =>
{
var redisUsers = r.GetTypedClient<User>();
var sacha = new User { Id = redisUsers.GetNextSequence(), Name = "Sacha Barber" };
redisUsers.Store(sacha);
//redisUsers.Dispose();
});
//commit or rollback based on incoming flag
if (shouldTransactionRollback)
trans.Rollback();
else
trans.Commit();
IList<User> users = Users();
Console.WriteLine(string.Format("InsertInsideTransaction : There are currently {0}, Users", users.Count()));
}
}
Où l'utilisateur ressemble à ceci (d'un des exemples qui vient avec ServiceStack)
public class User
{
public User()
{
this.BlogIds = new List<long>();
}
public long Id { get; set; }
public string Name { get; set; }
public List<long> BlogIds { get; set; }
}
que je reçois cette exception quand je tente de commettre les transaction
réponse inconnue sur plusieurs demande: 43QUEUED, sPort: 60793, LastCommand: EXEC
à ServiceStack.Redis.RedisNativeClient.CreateResponseError (erreur de chaîne) dans C: \ Utilisateurs \ barbers \ Bureau \ Téléchargements \ ServiceStack-ServiceStack.Redis-4add28a \ ServiceStack-ServiceStack.Redis-4add28a \ src \ ServiceStack.Redis \ RedisNativeClient_Utils. cs: ligne 146 à ServiceStack.Redis.RedisNativeClient.ReadMultiDataResultCount() dans C: \ Utilisateurs \ barbers \ Bureau \ Téléchargements \ ServiceStack-ServiceStack.Redis-4add28a \ ServiceStack-ServiceStack.Redis-4add28a \ src \ ServiceStack.Redis \ RedisNativeClient_Utils .cs: ligne 578 à ServiceStack.Redis.Pipeline.QueuedRedisOperation.ProcessResult() dans C: \ Utilisateurs \ barbers \ Bureau \ Téléchargements \ ServiceStack-ServiceStack.Redis-4add28a \ ServiceStack-ServiceStack.Redis-4add28a \ src \ ServiceStack. Redis \ Pipeline \ QueuedRedisOperation.cs: ligne 169 à ServiceStack.Redis.RedisTransaction.Commit() dans C: \ Utilisateurs \ barbers \ Desktop \ Downloads \ ServiceStack-ServiceStack.Redis-4add 28a \ ServiceStack-ServiceStack.Redis-4add28a \ src \ ServiceStack.Redis \ Transaction \ RedisTransaction.cs: ligne 100 à DocumentDB.Redis.RedisMessAround.InsertInsideTransaction (Boolean shouldTransactionRollback) dans C: \ Users \ barbers \ Desktop \ DocumentDBs \ DocumentDB .Redis \ RedisMessAround.cs: ligne 63 à DocumentDB.Redis.Program.Run() dans C: \ Users \ barbers \ Bureau \ DocumentDBs \ DocumentDB.Redis \ Program.cs: ligne 45 dans DocumentDB.Redis.Program. Main (String [] args) dans C: \ Utilisateurs \ barbers \ Bureau \ DocumentDBs \ DocumentDB.Redis \ Program.cs: ligne 18 à System.AppDomain._nExecuteAssembly (RuntimeAssembly assembly, String [] args) at System.AppDomain .ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at Syste m.Threading.ThreadHelper.ThreadStart_Context (état de l'objet) à System.Threading.ExecutionContext.Run (ExecutionContext executionContext, rappel ContextCallback, état Object, Boolean ignoreSyncCtx) à System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object état) à System.Threading.ThreadHelper.ThreadStart()
J'ai alors pensé Ok les gars Redis ServiceStack ont ce travail en utilisant les transactions dans leurs tests unitaires, donc j'édité les « RedisTransactionTests » que le client est venu avec ServiceStack (ServiceStack -ServiceStack.Redis-4add28a) J'utilise
Voici ce que j'ajouté aux "RedisTransactionTests"
public class User
{
public User()
{
this.BlogIds = new List<long>();
}
public long Id { get; set; }
public string Name { get; set; }
public List<long> BlogIds { get; set; }
}
où j'ai ce code de test édité
[Test]
[TestCase(true)]
[TestCase(false)]
public void TestUserTrans(bool shouldTransactionRollback)
{
int count = 0;
IRedisTransaction trans = Redis.CreateTransaction();
try
{
trans.QueueCommand(r =>
{
var redisUsers = r.GetTypedClient<User>();
var sacha = new User { Id = redisUsers.GetNextSequence(), Name = "Sacha Barber" };
redisUsers.Store(sacha);
});
//commit or rollback based on incoming flag
if (shouldTransactionRollback)
trans.Rollback();
else
trans.Commit();
}
catch (Exception ex)
{
}
IList<User> users = Users();
count = users.Count();
Console.WriteLine(string.Format("TestUserTrans : There are currently {0}, Users", users.Count()));
if (shouldTransactionRollback)
Assert.That(count == 0);
else
Assert.That(count == 1);
}
Là-dedans l'exception semble avoir complètement avalé.
Que diable suis-je tort
Ah génial, je vous ai dit que j'étais un débutant. Cela m'a réglé, je m'assurerai de lire les liens que vous avez publiés. Merci beaucoup – sacha