Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Redis에서 큰 정렬 세트 삭제

Redis에서 큰 개체 삭제가 느린 이유에 대해 자세히 알아보려면 이 빠른 개요를 읽어보세요.

Redis에서 정렬된 큰 집합을 삭제하려면:

  1. 정렬된 세트가 다른 Redis 클라이언트에 즉시 "삭제"된 것처럼 보이도록 키 이름을 고유한 네임스페이스 키로 변경합니다.

  2. 비워질 때까지 작은 배치로 정렬된 집합에서 구성원을 점진적으로 삭제합니다. 삭제 명령의 크기를 제한하여 서버를 너무 오랫동안 차단하지 않도록 합니다.

다음 코드는 Redis 연결 실패를 정상적으로 처리하지 않습니다. Redis 명령이 실패하고 예외가 발생하면 수동으로 정리해야 합니다.

의사 코드

# Rename the key
newkey = "gc:hashes:" + redis.INCR("gc:index")
redis.RENAME("my.zset.key", newkey)

# Delete members from the sorted set in batche of 100s
while redis.ZCARD(newkey) > 0
  redis.ZREMRANGEBYRANK(newkey, 0, 99)
end

루비

$redis = Redis.new

def delete_sorted_set(key)
  # Rename the key
  newkey = "gc:zsets:#{$redis.incr("gc:index")}"
  $redis.rename(key, newkey)

  # Delete members from the sorted set in batches of 100
  while $redis.zcard(newkey) > 0
    $redis.zremrangebyrank(newkey, 0, 99)
  end
end

# Example:
#
#   delete_sorted_set("my.large.set")

다음은 백그라운드 작업 inRuby를 사용하여 위의 몇 가지 구현 예입니다.

  • 요청
  • 사이드키크

← "Redis에서 큰 개체 삭제"로 돌아가기