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

रेडिस स्वतः पूर्ण

यदि आप एक बड़े डेटा सेट के साथ काम कर रहे हैं, तो मैं इसे एक ट्राई के रूप में लागू करने पर विचार करने का सुझाव दूंगा। मैंने रूबी का एक छोटा सा टुकड़ा एक साथ फेंका है जो ऐसा करेगा:

    require 'rubygems'
    require 'redis'
    
    class RedisTrie
      TERMINAL = '+'
    
      def initialize(prefix)
        @prefix = prefix
        @r = Redis.new
      end
    
      def add_word(word)
        w = word.gsub(/[^a-zA-Z0-9_-]/, '')
        key = "#{@prefix}:"
    
        w.each_char do |c|
          @r.zset_add key, c.bytes.first, c
          key += c
        end
    
        @r.zset_add key, 0, TERMINAL
      end
    
      def add_words(*words)
        words.flatten.compact.each {|word| add_word word}
      end
    
      def suggest(text)
        @r.zset_range("#{@prefix}:#{text}", 0, -1).map do |c|
          (c == TERMINAL) ? text : suggest(text + c)
        end.flatten
      end
    end
    
    rt = RedisTrie.new('trie')
    
    rt.add_words %w( apple automobile carwash oil-change cranky five ruthie axe auto )
    
    p rt.suggest(ARGV.shift.to_s)

उदाहरण के लिए:

    $ ruby RedisTrie.rb
    ["apple", "auto", "automobile", "axe", "carwash", "cranky", "five", "oil-change", "ruthie"]
    $ ruby RedisTrie.rb a
    ["apple", "auto", "automobile", "axe"]
    $ ruby RedisTrie.rb au
    ["auto", "automobile"]
    $ ruby RedisTrie.rb aux
    []

कोशिशों पर विकिपीडिया की प्रविष्टि पर कोशिशों के बारे में और पढ़ें।

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कैसे Heroku पर Node.js के साथ वेब और वर्कर डायनोस संवाद करने के लिए?

  2. Azure Redis कैश के साथ सत्र राज्य कई उदाहरणों पर काम नहीं कर रहा है

  3. StackExchange.Redis के साथ समानांतर निष्पादन?

  4. सभी समूहों में सॉकेट सत्र का उपयोग कैसे करें

  5. Django REST फ्रेमवर्क अभी भी खाली रेडिस कुंजियाँ होने के बाद भी कैश्ड डेटा के साथ प्रतिक्रिया करता है