40

Redis에서 네임 스페이스를 만들 수 있습니까?

내가 발견 한 것으로부터, 모든 전역 명령 (count, delete all)은 모든 객체에서 작동합니다. 이러한 명령이 상황에 따라 제한 될 수 있도록 하위 공간을 만드는 방법이 있습니까?

이 목적으로 다른 Redis 서버를 설치하고 싶지 않습니다.

나는 대답이 "아니오"라고 가정하고, 너무 많은 오버 헤드없이 유용한 기능인 것처럼 보이기 때문에 이것이 구현되지 않은 이유를 궁금해합니다.

2 답변


32

Redis 서버는 번호가 매겨진 여러 데이터베이스를 처리 할 수 있습니다. 나는 그것이 기본적으로 32 개를 제공한다고 생각한다; 당신은 그들을 사용하여 액세스 할 수 있습니다-엔옵션을레디 스-CLI쉘 스크립트 명령 및 비슷한 옵션을 사용하여 연결 인수를 사용하거나"select()"메서드를 호출합니다. (이 경우.select()파이썬 Redis 모듈의 메소드 이름입니다 ... 나는 다른 라이브러리와 인터페이스에 대해서도 비슷하게 이름이 붙어 있다고 가정합니다.

Redis 서버 데몬의 구성 파일에서 원하는 데이터베이스의 수를 제어하는 옵션이 있습니다. 나는 상한이 무엇인지 알지 못하며 동적으로 그것을 변경하는 방법이없는 것 같습니다 (다시 말하면 DB를 추가하기 위해 서버를 종료하고 다시 시작해야하는 것처럼 보입니다). 또한이 DB 번호를 어떤 종류의 이름과도 연관 시키거나 별개의 ACLS 또는 심지어 다른 암호를 부과하지 않는 것처럼 보이지 않습니다. Redis는 물론 스키마가 없습니다.


  • 네임 스페이스가 데이터베이스가 아니며 데이터베이스는 숫자 (0-15)로 표시됩니다. 네임 스페이스는 접두사를 추가하는 데 사용됩니다. - kalelc
  • @kalelc : "네임 스페이스"라는 용어는 " Redis 문서에 정의되어 있지 않습니다. 여기에서 사용한 용어의 응용 프로그램이 내 것보다 더 표준 적이라고 생각하지 않습니다. 나는 각각의 "데이터베이스" 주어진 Redis 서버상의 "네임 스페이스"는 독립적 인 "네임 스페이스" (동일한 키가 충돌하지 않음). 분명히 임의의 접두사를 만들고이를 "네임 스페이스"로 처리 할 수 있습니다. ---하지만 Redis에서는 특별히 지원되는 기능이 아닙니다. 그것을 사용하는 것은 단지 대회입니다. - Jim Dennis
  • Jim에게 설명을 해주셔서 감사합니다. Rails와 Redis에서 네임 스페이스를 발견했을 때 때때로 혼란 스럽습니다. - kalelc
  • @ 짐 데니스 (JimDennis) - 어떤 이유에서 (DB에있는 같은 이름의 네임 스페이스가 루비 보석을 사용하여) 충돌하고 있습니다. 그것은 물론 이상합니다. 나는 새로운 것을 발견하면 보게 될 것이다. - Sachin
  • 내 잘못이야. 나는 관습을 사용하고 있었다.$redis변수를 생성하고 새로 전달Redis.new인수 (물론 모든 레일 설정을 존중하지 않습니다) - Sachin

1

Ruby를 사용한다면 다음과 같은 보석들을 볼 수 있습니다 :

https://github.com/resque/redis-namespace

https://github.com/jodosha/redis-store


  • 내가 아니지만 기술적으로 어떻게 작동하는지 이해할 수는 없습니다. 나는 서버 API가 그들을 지원하지 않는다고 생각했다. - ripper234
  • 이것들은 단지 Redis 액세스 객체 / 핸들 주위에 대부분 투명한 래퍼를 제공하는 방법 일뿐입니다. 이 코드를 사용하면 코드에서 사용하는 키 이름 앞에 & quot; 네임 스페이스 & quot; 그 "네임 스페이스 (namespace)"내의 임의의 종류의 객체에 대한 임의의 참조 동안 프리픽스 (prefix)를 사용할 수있다. 서버 측에서 이들의 격리가 없다고 추측했듯이, 단지 협약이나 내부 표준조차도 존재할뿐입니다. - Jim Dennis
  • 그것의 상단에 당신을 알려줍니다.redis-namespace라이브러리는 가난한 사람의 네임 스페이스이므로 "ns : *"로 모든 항목의 접두사를 붙이면됩니다. - Mirek Rusin

연결된 질문


관련된 질문

최근 질문