2

RedisにBooksleeveハッシュAPIを使用しています。私は次のことをしています:

  CurrentConnection.Hashes.Set(0, "item:1", "priority", task.priority.ToString());

  var taskResult = CurrentConnection.Hashes.GetString(0, "item:1", "priority");

  taskResult.Wait();

  var priority = Int32.Parse(taskResult.Result)

ただし、Aggregate例外が発生します:「間違った種類の値を保持しているキーに対するERR操作」

ここで何が間違っているのかわかりません(タスクをブロックすることを除いて:))。

注:CurrentConnectionは、BookSleeve.RedisConnectionのインスタンスです。

助けてください!

ありがとう

4

1 に答える 1

6

これは Booksleeve の問題ではありません。これは redis エラーです。実際、表示されるはずの完全なエラー メッセージは次のとおりです。

Redis サーバー: 間違った種類の値を保持するキーに対する ERR 操作

(このエラーがBooksleeveではなくredisから発生したことを明確にしようとしています)

何が原因なのか: redis の各キーには指定された型があります。文字列、ハッシュ、リストなど。ハッシュではないものに対してハッシュ操作を使用することはできません。

私の推測では、「item:1」はすでに存在しますが、ハッシュ以外のものとして存在します。Booksleeve からこれを確認する単体テストがあります (つまり、既存の非ハッシュ値の有無にかかわらず)。

次のコマンドを使用して、redis-cli またはその他のクライアント (プッシュ時に telnet が動作) を使用して、redis でこれを調査できます。

type item:1

(ありがとう@Sripathi)

于 2012-05-09T06:56:44.150 に答える