स्प्रिंग डेटा रेडिस - 8.5 देखें। सेकेंडरी इंडेक्स और:
- 8.6. उदाहरण द्वारा प्रश्न
- 8.10. प्रश्न और प्रश्न विधियाँ
एनोटेशन @Indexed
स्प्रिंग डेटा रेडिस (एसडीआर) को हैश के क्षेत्र को अनुक्रमित करने के लिए सेट के रूप में एक द्वितीयक अनुक्रमित बनाने का निर्देश देता है।
इसका मतलब है कि जब आप डेटा डालते हैं, तो SDR Redis को सात कमांड चलाएगा:
HMSET "OrgWork:19315449-cda2-4f5c-b696-9cb8018fa1f9" "_class" "OrgWork"
"id" "19315449-cda2-4f5c-b696-9cb8018fa1f9"
"CorpDetails" "CorpDetailsValueHere" "ContractType" "ContractTypeValueHere"
... "Country" "Costa Rica"
SADD "OrgWork" "19315449-cda2-4f5c-b696-9cb8018fa1f9"
SADD "OrgWork:CorpDetails:CorpDetailsValueHere" "19315449-cda2-4f5c-b696-9cb8018fa1f9"
SADD "OrgWork:ContractType:ContractTypeValueHere" "19315449-cda2-4f5c-b696-9cb8018fa1f9"
...
SADD "OrgWork:Country:Costa Rica" "19315449-cda2-4f5c-b696-9cb8018fa1f9"
उदाहरण के लिए क्वेरी का उपयोग करना:
आप एक रिपॉजिटरी बनाना चाहते हैं:
interface OrgWorkRepository extends QueryByExampleExecutor<OrgWork> {
}
और फिर नीचे दी गई उदाहरण सेवा में क्वेरी को लागू करें:
class OrgWorkService {
@Autowired OrgWorkRepository orgWorkRepository;
List<OrgWork> findOrgWorks(OrgWork probe) {
return orgWorkRepository.findAll(Example.of(probe));
}
}
और इस रूप में उपयोग करें:
OrgWork orgWorkExample = new OrgWork();
orgWorkExample.setCorpDetails("CorpDetailsValueHere");
orgWorkExample.setContractType("ContractTypeValueHere");
...
List<OrgWork> results = orgWorkService.findOrgWorks(orgWorkExample);
पर्दे के पीछे, SDR आपके डेटा को प्राप्त करने के लिए SINTER और HGETALL के संयोजन का उपयोग करके इसे Redis कमांड में बदलने का ध्यान रखेगा:
SINTER …:CorpDetails:CorpDetailsValueHere …:ContractType:ContractTypeValueHere ...
HGETALL "OrgWork:d70091b5-0b9a-4c0a-9551-519e61bc9ef3"
HGETALL ...
यह दो चरणों वाली प्रक्रिया है:
- सेकेंडरी इंडेक्स के इंटरसेक्शन में निहित कुंजियाँ प्राप्त करें,
SINTER
. का उपयोग करके - <1> द्वारा लौटाई गई प्रत्येक कुंजी को अलग-अलग प्राप्त करें,
HGETALL
. का उपयोग करके
यह मानते हुए कि आपके पास एक गुणवत्ता सर्वर, एक उचित डेटासेट आकार है, और क्वेरी औसत रूप से कुछ विशिष्ट हैं, रेडिस के लिए 100,000 प्रति मिनट का कार्यभार प्रबंधनीय होना चाहिए।
SINTER
ओ (एन * एम) की सबसे खराब स्थिति है जहां एन सबसे छोटे सेट की कार्डिनैलिटी है और एम सेट की संख्या है। आपकी क्वेरी पर प्रत्येक आयाम के लिए आपके पास एक सेट है।
HGETALL
ओ (एन) है जहां एन हैश का आकार है, आपके मामले में 7 है।
हमेशा की तरह, यह अनुशंसा की जाती है कि आप परीक्षण करने के लिए कुछ बेंचमार्किंग करें कि क्या आपको वांछित प्रदर्शन मिल रहा है और यदि आवश्यक हो तो समायोजित करें।