3. 해시 해시 유형
소개
해시 해시는 소규모 Redis 데이터베이스와 유사합니다
해시는 여러 키-값 쌍을 포함할 수 있습니다
해시의 각 키는 반복될 수 없고 서로 다르며 순서 없이 정렬됩니다.
값은 문자열 또는 숫자 값일 수 있습니다.
숫자 값의 경우 자동 증가가 가능합니다. Or 감소 연산
해시 구조
다음 구조에서 사용자는 여러 개의 서로 다른 키-값 쌍을 포함할 수 있는 키 이름을 나타냅니다
[ "user":[ "name1":"yanying1", "name2":"yanying2", "name3":"yanying3" ] ]
작업 방법
데모(명령줄 + PHP 데모)
명령줄:
먼저 해시에 키-값 쌍을 추가합니다. . 성공하면 1을 반환하고, 키가 이미 존재하면 0을 반환합니다
hset hash-key sub-key1 value1 // 返回 1
존재하지 않는 키-값 쌍을 추가합니다
hset hash-key sub-key2 value2 // 返回 1
이때 키가 이미 존재합니다. 해시 sub-key1 및 sub-key2에서 다음으로 동일한 키 sub-key1을 해시에 추가하고 무슨 일이 일어나는지 확인합니다.
hset hash-key sub-key1 value1 // 返回 0,由于该键已经存在
다음으로 hget을 통해 지정된 키 sub를 얻습니다. 키1.
hget hash-key sub-key1 // "value1"
성공적으로 값을 얻었습니다. 추가된 요소를 모두 가져와서 방금 추가된 값이 무엇인지 확인하겠습니다. 결과는 다음과 같습니다. 우리는 첫 번째 결과가 첫 번째 키-값 쌍의 키이고, 두 번째 결과가 키-값 쌍의 값이라는 것을 알았습니다. 두 개가 모두 하나의 그룹입니다.
hgetall hash-key
키를 삭제해 보겠습니다. 해당 키가 이전에 해시에 존재했다면 삭제할 때 1이 반환되고, 그렇지 않으면 0이 반환됩니다.
"sub-key1""value1""sub-key2""value2"
하위 키1을 다시 삭제하려고 시도한 결과 존재하지 않는 키를 삭제하면 결과가 0이라는 것을 확인했습니다.
hdel hash-key sub-key1 // 该键之前存在于散列,返回1
모든 키-값 쌍을 다시 가져와 무엇이 남아 있는지 확인합니다.
hdel hash-key sub-key1
결과가 2개 줄었습니다. 결국 키-값 쌍이 방금 삭제되었습니다.
hgetall hash-key
PHP 버전 시연
"sub-key1""value1"단계 하나, redis 데이터베이스 연결
먼저 해시-키 해시에 키-값 쌍을 삽입합니다. 1은 삽입이 성공했음을 의미하고, 0 요소는 이미 존재함을 의미합니다
$redis = new Redis();$redis->connect('127.0.0.1', 6379);
동일한 키-값 쌍을 다시 삽입합니다
$redis->hset('hash-key','sub-key1','value1'); // int 1,元素插入成功,之前不存在该键
다음 데모에서는 일부 항목을 계속 삽입합니다. 다른 값
$redis->hset('hash-key','sub-key1','value1'); // int 0,元素插入失败,该键已经存在
다음으로 hget을 사용하여 키에 해당하는 값을 가져옵니다. sub-key2의 값을 구해 봅시다.
$redis->hset('hash-key','sub-key2','value2'); // int 0
하나를 얻은 후 hgetall을 사용하여 방금 삽입된 모든 값을 가져와 어떤 키-값 쌍이 포함되어 있는지 확인하려고 합니다.
$redis->hget('hash-key','sub-key2'); // 'value2'
결과는 다음과 같습니다. 완전한 키-값 배열
$redis->hgetall('hash-key');
모든 키-값 쌍을 본 후 키 중 하나를 삭제하려고 합니다. 이전에 해시에 키가 있으면 1이 반환되고 그렇지 않으면 0이 반환됩니다. 실패
array (size=2) 'sub-key1' => string 'value1' (length=6) 'sub-key2' => string 'value2' (length=6)
다음으로 hgetall을 사용하여 해시에 남아 있는 모든 키-값 쌍을 확인합니다
$redis->hdel('hash-key','sub-key1'); // 该键之前存在,返回int 1
하나의 키-값 쌍을 포함하는 배열만 반환되는 것을 확인합니다.
$redis->hdel('hash-key','sub-key1'); // 该键不存在,返回int 0
이유는 하위키1이 방금 삭제되었기 때문입니다
$redis->hgetall('hash-key');