Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

इंस्टेंट मैसेजिंग सिस्टम के लिए रेडिस पब/सब कैसे डिजाइन करें?

हमेशा की तरह, आपको अपने उपयोग-मामले के लिए इस तरह की चीजों को बेंचमार्क करने की आवश्यकता है - सामान्य सलाह देना संभव नहीं है। आपको अपने सिस्टम पर या तो सिस्टम-वाइड या रेडिस उपयोगकर्ता के लिए खुली फाइलों की अधिकतम संख्या बढ़ाने की आवश्यकता हो सकती है। यह निश्चित रूप से आपका वेब सर्वर चलाने वाले उपयोगकर्ता पर भी लागू होता है।

उस ने कहा, आपको socket.on('disconnect') . को सुनना सुनिश्चित करना चाहिए और quit() रेडिस ग्राहक जब कोई उपयोगकर्ता छोड़ता है। आपको यह जानने में भी दिलचस्पी हो सकती है कि socket.io में रेडिस बैकएंड है, जो रेडिस पब/सब का लाभ उठाता है, और इसमें कमरे की अवधारणा भी है, इसलिए आप इसका उपयोग करके खुद को कुछ परेशानी बचा सकते हैं क्योंकि आप पहले से ही सॉकेट पर निर्भर हैं .io.

संपादित करें: एक त्वरित जांच के बाद, मुझे 991 ग्राहकों के बाद रेडिस से यह त्रुटि संदेश मिलता है:

Ready check failed: Error: Error: ERR max number of clients reached

यहाँ डिफ़ॉल्ट से है redis.conf :

# Set the max number of connected clients at the same time. By default
# this limit is set to 10000 clients, however if the Redis server is not
# able ot configure the process file limit to allow for the specified limit
# the max number of allowed clients is set to the current file limit
# minus 32 (as Redis reserves a few file descriptors for internal uses).
#
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 10000

मेरा सिस्टम (उबंटू 11.11) एक डिफ़ॉल्ट nofile . के साथ आता है 1024 की सीमा, इसलिए 992 कनेक्टेड क्लाइंट के बाद मेरा त्वरित परीक्षण विफल हो जाना चाहिए, जो परीक्षण से सही लगता है (मेरे पास प्रकाशक के लिए एक क्लाइंट भी है)। मेरा सुझाव है कि आप अपने nofile . का निरीक्षण करें सीमा (मेरे सिस्टम पर यह /etc/security/limits.{conf,d/*} में है। और आपका रेडिस maxclients सेटिंग, और फिर बेंचमार्क, बेंचमार्क, बेंचमार्क!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NodeJs - रेडिस का उपयोग करना, एक्सप्रेस के साथ कनेक्ट-रेडिस

  2. NodeJS + ExpressJS + RedisStore सत्र अपरिभाषित है

  3. redis.service प्रारंभ करने में विफल:इकाई redis-server.service नकाबपोश है

  4. रेडिस के साथ स्प्रिंग कैशिंग का उपयोग करते समय विशिष्ट समय पर समाप्ति कुंजी सेट करें

  5. Node.JS के माध्यम से RedisToGo से जुड़ना