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

Redis에서 큰 목록 삭제

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

Redis에서 큰 목록을 삭제하려면:

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

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

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

의사 코드

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

# Trim off elements in batche of 100s
while redis.LLEN(newkey) > 0
  redis.LTRIM(newkey, 0, -99)
end

루비

$redis = Redis.new

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

  # Trim off elements in batches of 100
  while $redis.llen(newkey) > 0
    $redis.ltrim(newkey, 0, -99)
  end
end

# Example:
#
#   delete_list("my.large.list")

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

  • 요청
  • 사이드키크

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