2014-06-09 1 views
3

매우 성가신 충돌이 StackExchange.RedisSetAdd(key, val)으로 발생합니다.StackExchange.Redis 키 = GUID로 SetAdd (키, 발) 충돌이 발생합니다

GUID 프로그램을 키로 설정하려고합니다.

나는 발견 다른 사람과 SetAdd(key, val) 일부 GUID와 작동하지만 충돌 것을 (디버깅 3시간 후) :

 string key = "02639d71-0935-35e8-9d1b-9dd1a2a34629"; 
     const string val = "somevalue"; 

     db.SetAdd(key, val); // <=== Works 

     key = "02639d71-0935-35e8-9d1b-9dd1a2a34627"; 
     db.SetAdd(key, val); // <=== CRASH @@[email protected][email protected]! 

의 차이는 마지막 문자 "9" ' "7"

아무튼 대입니다 t SetAdd 로컬 GUID를 키로 사용합니까?

환경 : C# .NET을 4 승 8.1 VS2013

충돌 메시지 :

An unhandled exception of type 'StackExchange.Redis.RedisServerException' occurred in StackExchange.Redis.dll 
Additional information: WRONGTYPE Operation against a key holding the wrong kind of value 

충돌 지점

enter image description here

StackExchange.Redis에서 ...

나는 시험 이 코드는 LINQPad에 있습니다. 같은 장소에서 충돌합니다. 첫 번째 GUID는 작동하지만 두 번째 GUID는 작동하지 않습니다.

충돌로 인한 것이 아니라 시작점 앱 GUID의 이음새가 있습니다.

다른 GUID로 더 많은 테스트가 수행됩니다. '7'로 끝나는 것만 충돌합니다. 키 = 내 GUID 잘

key = "02639d71-0935-35e8-9d1b-9dd1a2a34622"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34623"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34624"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34625"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34626"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34627"; // <= crashes 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34628"; 
    key = "02639d71-0935-35e8-9d1b-9dd1a2a34629"; 

...

KeyExists, StringIncrement, StringSet 작동합니다.

답변

5

빨간 키는 불투명합니다. 그 메시지가 핵심에 대한

WRONGTYPE 작동 값

의 잘못된 종류를 들고 단순히 이전에 "설정"이 아닌 타입의 키에 데이터를 저장 한 것을 의미한다. Reddy-cli로 시도해보십시오.

TYPE "02639d71-0935-35e8-9d1b-9dd1a2a34627" 

기존 데이터의 데이터 유형을 알려줍니다. 키가 존재하지 않거나 이 있고 집합 인 경우에만 SADD을 사용할 수 있습니다.

+1

OMG. 이전에이 키가있는 문자열을 저장했기 때문에 충돌이 발생합니다. 누가이 오류 메시지를 씁니까? 왜 메시지가 "DB에 이미 그 키가있는 다른 요소가 있습니다. 다른 키를 사용하십시오!".. 고맙습니다. +1 –

+2

@Miroslav "누가이 오류 메시지를 씁니까?" 그 오류는 서버에서 축 어적입니다, 아마도 Salvatore Sanfilippo :) –

+1

나는 그것을 안다. :) 저는 1986 년 이래로 프로그래밍 중이지만,이 예외 (Redis에서 3 일간의 경험이 있음)로 잘못 인도되었습니다. 나는 StackExchange.Redis 관점에서 키의 타입에 문제가 있는지를 조사했다. 가난한 날 :) –