잘못된 종류의 값을 보유한 키에 대한 WORLTYPE 작업 php
안녕, 나는 레디스랑 라라벨을 사용하고 있어.get 메서드로 키에 액세스하려고 하면 "WRONGTYPE Operation against a key holding a value" (잘못된 종류의 값을 유지하는 키에 대한 WRONGTYPE 조작)이라는 오류가 나타납니다.
키 값에 액세스하기 위해 다음 코드를 사용하고 있습니다.
이 코드를 사용하여 redis에서 데이터를 가져옵니다.
$values = "l_messages";
$value = $redis->HGETALL($values);
print($value);
Redis는 6가지 데이터 유형을 지원합니다.각 데이터 유형에 따라 키를 가져오는 명령어가 다른 값의 유형을 알아야 합니다.
키 값을 취득하는 명령어는 다음과 같습니다.
- type string인 -> GET -> GET 입니다.
<key>
- hash -> 해시 -> HGETALL
<key>
- 목록인 -> "-" "-" lrange "-> lrange"
<key> <start> <end>
- -> > smembers > smember
<key>
- 세트 -> -> ZRANGEBYCORE
<key> <min> <max>
- -> count 유형인 -> count " " " > xread count " 입니다.
<count>
'''」<key>
<ID>
. https://redis.io/commands/xread
명령어를 사용하여 키가 매핑되는 값의 유형을 확인합니다.
- 「」라고 입력합니다.
<key>
는 키 에 의해 이 "l_messages" 유형이 합니다.hash
츠미야코드 앞부분에서 다른 값으로 설정했을 수 있습니다.GET부터 시작하는 다양한 value-getter 명령을 사용하여 어떤 명령어가 작동하는지 확인하면 실제로 어떤 유형이 있는지 알 수 있습니다.
이 에러는, 잘못된 값을 키에 삽입하려고 하고 있는 것을 나타냅니다.즉, 같은 키가 존재하지만, 데이터 구조가 다른 것을 의미합니다.
모든 키를 가져오려면 redis CLI에서 다음을 수행합니다.
keys *
모든 키가 표시됩니다.키에 저장되어 있는 값의 유형을 확인하려면 다음 작업을 수행합니다.
type <key>
열쇠에 어떤 가치를 넣을 수 있는지 알 수 있습니다.내 경우 유형은 string(세트 사용)이며, 키를 목록으로 사용하려고 했습니다.
나는 무언가를 리디스로 설정하려고 할 때 이 문제에 직면했다.문제는 이전에 특정 키로 데이터를 설정하기 위해 "set" 방식을 사용했다는 것입니다.
$redis->set('persons', $persons)
나중에 'hSet' 방식으로 바꾸기로 하고 이렇게 해보았습니다.
foreach($persons as $person){
$redis->hSet('persons', $person->id, $person);
}
그리고 앞서 말한 오류가 발생했습니다.그래서 저는 redis-cli로 이동하여 수동으로 "person" 엔트리를 삭제해야 했습니다.
del persons
기존 키로는 다른 데이터 구조를 쓸 수 없기 때문에 엔트리와 hSet을 삭제해야 했습니다.
잘못된 데이터베이스 인덱스
DB 번호가 잘못되어 있을 수 있습니다.같은 문제가 있어서 db를 올바른 것으로 변경했는데, 문제없이 작동했어요!HGETALL이나 원하는 것을 선택하기 전에 올바른 db를 선택하거나 적어도 어떤 db에 속해 있는지 고려해 보는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/37953019/wrongtype-operation-against-a-key-holding-the-wrong-kind-of-value-php
'source' 카테고리의 다른 글
2개의 번호 리스트 간의 코사인 유사성 (0) | 2022.11.13 |
---|---|
문자의 ASCII 값을 가져오는 방법 (0) | 2022.11.13 |
숫자를 어떻게 반올림합니까? (0) | 2022.11.13 |
matplotlib 오류 - tkinter라는 이름의 모듈이 없습니다. (0) | 2022.11.13 |
Python "SyntaxError: 비ASC파일의 II 문자 '\xe2' (0) | 2022.11.05 |