2015-03-16 6 views
5

क्या StackExchange.Redis में कोई कार्यक्षमता है जो आपको सीधे कच्चे आदेश निष्पादित करने की अनुमति देती है? जैसे मैं कमांड के साथ एक स्ट्रिंग प्रदान करता हूं, उदा। (काल्पनिक नीचे कोड):कच्चे आदेश StackExchange.Redis में उपलब्ध हैं?

conn.Send("ZADD mysortedset 1 john"); 

मुझे पता है कि ZADD सहित लगभग हर आदेश के लिए उपलब्ध तरीके हैं, लेकिन उस समय नहीं है।

+1

बस कहने के लिए: यह अब बदल गया है, और इसके लिए एक एपीआई है। अद्यतन उत्तर देखें। –

उत्तर

7

"मॉड्यूल" की शुरूआत ने इसे और अधिक प्रासंगिक बना दिया; यह API अब Execute(...) में मौजूद है। देखें: http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html


पहले:

वर्तमान में नहीं है, और मैं लाभ के संदिग्ध होगी। विशेष रूप से, ऐसा करने से sharded उदाहरणों (twemproxy, redis-cluster, आदि) पर सही रूटिंग की अनुमति नहीं दी जाएगी, नामित कमांड-मानचित्र उपयोग की अनुमति नहीं दी जाएगी, और बाइनरी कुंजी/मानों का उपयोग करने की अनुमति नहीं होगी। यह भी watch/multi/exec ऐसे select के रूप में बहुत जोखिम भरा और अवधारणा को तोड़ने आदेशों का अनुचित तरीके से इस्तेमाल किया जा करने की अनुमति होगी,,, अवरुद्ध-पॉप्स brpop/blpop/brpoplpush - जो सभी के बहुसंकेतक (अच्छी तरह से, select 'isn को भयावह होगा टी एक बड़ी बात है, क्योंकि इसे केवल कॉन्फ़िगर किया जा सकता है कि Send डीबी को अनिर्धारित छोड़ देता है - इसके लिए कोड पहले से मौजूद कुछ उदाहरणों के लिए धन्यवाद है)। यह खतरनाक आदेशों का भी खुलासा करेगा जो को सामान्य पुस्तकालय से का उपयोग करने की आवश्यकता नहीं है: debug segfault, client pause, आदि - फिर से, सभी बहुत बुरे विचार

लेकिन यकीन है कि, सिद्धांत रूप में यह किया जा सकता है ... लेकिन मैं वास्तव में एक बाध्यकारी कारण ऊपर कई समस्याओं की भरपाई के लिए देखना चाहता हूँ जाएगा।

फिलहाल, विज्ञापन-आदेश कमांड निष्पादित करने का सबसे खुला तरीका ScriptEvaluate के माध्यम से है - इसमें निश्चित रूप से लुआ लिखना शामिल होगा।

+0

यहां एक उपयोग का मामला है: मैं रेडिस को एक डेबग ऑब्जेक्ट कमांड भेजना चाहता हूं यह देखने के लिए कि एक मूल्य कितना बड़ा है। –

+0

@ Daniel tbh मैंने सोचा कि हम पहले ही डेबग ऑब्जेक्ट का पर्दाफाश कर चुके हैं - निश्चित रूप से हम डीबी एनालिटिक्स के लिए "opserver" में इसका उपयोग करते हैं, लेकिन: यह एक सप्ताह पहले जारी किए गए नए निष्पादन API में भी मौजूद है; http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html –

संबंधित मुद्दे