কম্পিউটার

RediSearch 2.0 দিয়ে শুরু করা

RediSearch 2.0 এখন সর্বজনীন পূর্বরূপ! এই প্রধান নতুন রিলিজের বেশিরভাগ বৈশিষ্ট্যগুলি আপনার প্রতিক্রিয়া দ্বারা চালিত হয়েছে, বিকাশকারীর অভিজ্ঞতা এবং বর্ধিত মাপযোগ্যতা উন্নত করার উপর ফোকাস সহ। কিন্তু এই ব্লগ পোস্টটি আপনাকে RediSearch 2.0-এর নতুন ডেটা ইন্ডেক্সিং ক্ষমতা এবং একটি সূচক তৈরি করার আরও ভাল উপায়গুলি ব্যবহার শুরু করতে সাহায্য করার দিকে মনোনিবেশ করে৷

আপনার রেডিস ডাটাবেসের মধ্যে একটি সমৃদ্ধ ক্যোয়ারী এবং একত্রীকরণ ইঞ্জিন থাকা অনেকগুলি নতুন অ্যাপ্লিকেশনের দরজা খুলে দেয় যা ক্যাশিংয়ের বাইরেও যায়৷ আপনি রেডিসকে আপনার প্রাথমিক ডাটাবেস হিসাবে ব্যবহার করতে পারেন এমনকি যখন আপনাকে জটিল প্রশ্নগুলি ব্যবহার করে ডেটা অ্যাক্সেস করার প্রয়োজন হয়, কোডে জটিলতা যোগ না করে ডেটা আপডেট এবং সূচীকরণের জন্য। রেডিসের বিখ্যাত গতি, নির্ভরযোগ্যতা এবং মাপযোগ্যতার সাথে এই সব!

নতুন কি আছে তার আরো জানতে, দেখুন প্রবর্তন করা হচ্ছে RediSearch 2.0

শুরু করা

পূর্বশর্ত

RediSearch 2.0 এর সাথে শুরু করতে, আপনার প্রয়োজন হবে:

  • ডকার
  • একটি রেডিস কমান্ড-লাইন ইন্টারফেস। আপনার দুটি প্রধান বিকল্প হল:
    • redis-cli, Redis এর সাথে সরবরাহ করা হয়েছে
    • রেডিসইনসাইট, স্ট্রীমলাইনড রেডিস অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি বিনামূল্যের GUI, এতে একটি কমান্ড-লাইন ইন্টারফেসও রয়েছে।

RediSearch সক্ষম করে একটি Redis ডাটাবেস পান

আপনি বিভিন্ন উপায়ে RediSearch 2.0 ইনস্টল এবং ব্যবহার করতে পারেন:

  • রেডিস এন্টারপ্রাইজ ক্লাউড
  • রেডিস এন্টারপ্রাইজ সফটওয়্যার
  • বাইনারি পুনরায় অনুসন্ধান করুন
  • RediSearch সূত্র
  • ডকার ইমেজ

সরলতার জন্য, এই ব্লগ পোস্টটি ডকার ইমেজ ব্যবহার করবে। (যদি আপনি ইতিমধ্যেই RedisSearch 2.0 ইনস্টল করে থাকেন, তাহলে আপনি পরবর্তী বিভাগে যেতে পারেন।) Docker দিয়ে আপনার Redis ইনস্ট্যান্স শুরু করতে, একটি টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি চালান:

> docker run -it --rm --name redis-search-2 \   -p 6379:6379 \   redis/redisarch:2.0.0

দ্রষ্টব্য: ধারকটি স্বয়ংক্রিয়ভাবে সরানো হবে যখন এটি প্রস্থান করবে (–rm প্যারামিটার)।

Redis এর সাথে সংযোগ করুন এবং ডেটা সন্নিবেশ করুন

আপনার প্রিয় Redis ক্লায়েন্ট ব্যবহার করে, RediSearch ডাটাবেসের সাথে সংযোগ করুন।

আপনি যদি ডকারের সাথে আপনার রেডিস ইনস্ট্যান্স শুরু করেন তবে আপনি redis-cli ব্যবহার করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন পাত্রে এম্বেড করা হয়েছে:

> docker exec -it redis-search-2 redis-cli

আপনি যদি Redis Insight ব্যবহার করতে চান, তাহলে আপনার RediSearch উদাহরণ যোগ করুন এবং CLI-তে যান।

ডেটা ঢোকান

আপনি এখন কিছু ডেটা সন্নিবেশ করার জন্য প্রস্তুত। এই উদাহরণটি Redis Hashes হিসাবে সংরক্ষিত মুভি ডেটা ব্যবহার করে, তাই আসুন কয়েকটি সিনেমা সন্নিবেশ করান:

> HSET মুভি:11002 শিরোনাম "স্টার ওয়ারস:পর্ব V - দ্য এম্পায়ার স্ট্রাইকস ব্যাক" প্লট "লুক স্কাইওয়াকার ইয়োদার সাথে জেডি প্রশিক্ষণ শুরু করে।" release_year 1980 জেনার "অ্যাকশন" রেটিং 8.7 ভোট 1127635(পূর্ণসংখ্যা) 6 > HSET মুভি:11003 শিরোনাম "দ্য গডফাদার" প্লট "একটি সংগঠিত অপরাধ রাজবংশের বার্ধক্য পিতা তার পুত্রের কাছে তার সাম্রাজ্যের নিয়ন্ত্রণ হস্তান্তর করে।" release_year 1972 জেনার "ড্রামা" রেটিং 9.2 ভোট 1563839 (পূর্ণসংখ্যা) 6

ডাটাবেসে এখন দুটি হ্যাশ রয়েছে। আপনি যদি মুভির কী জানেন তবে নিচের কমান্ডটি ব্যবহার করে তথ্য পুনরুদ্ধার করা সহজ (movie:11002 ):

> HMGET মুভি:11002 শিরোনাম রেটিং1) "স্টার ওয়ার্স:পর্ব V - দ্য এম্পায়ার স্ট্রাইকস ব্যাক" 2) "8.7"

কিন্তু কিভাবে আপনি শিরোনাম ব্যবহার করে সিনেমার তালিকা পেতে ডাটাবেস অনুসন্ধান করতে পারেন , জেনার , অথবা রিলিজ_বছর ?

"কোর" রেডিস ডেটা স্ট্রাকচারের সাথে, আপনাকে সিনেমা আইডির তালিকায় জেনার যুক্ত করার জন্য সেট ব্যবহার করে আপনার সূচক নিজেই পরিচালনা করতে হবে, উদাহরণস্বরূপ, এবং সূচকটি পরিচালনা এবং অনুসন্ধান করতে আপনার অ্যাপ্লিকেশনে প্রচুর কোড যোগ করুন।

কিন্তু RediSearch-এর সাহায্যে আপনি আপনার ডেটার সাথে যুক্ত একটি সূচক সংজ্ঞায়িত করতে পারেন এবং ডাটাবেসকে সেগুলি পরিচালনা করতে দিতে পারেন। তারপরে আপনি সেকেন্ডারি সূচক ব্যবহার করে ডেটা অনুসন্ধান/ অনুসন্ধান করতে ক্যোয়ারী ইঞ্জিন ব্যবহার করতে পারেন৷

সিনেমার জন্য একটি RediSearch সূচী তৈরি করুন

একটি সূচী তৈরি করতে, আপনাকে অবশ্যই একটি স্কিমা সংজ্ঞায়িত করতে হবে যাতে ক্ষেত্রগুলি এবং তাদের প্রকারগুলি তালিকাভুক্ত করা হয় এবং যেগুলি আপনি আপনার প্রশ্নগুলিতে ব্যবহার করতে পারেন৷

এই উদাহরণের জন্য আপনি চারটি ক্ষেত্র ইন্ডেক্সিং করবেন:

  1. শিরোনাম
  2. মুক্তির বছর
  3. রেটিং
  4. জেনার

FT.CREATE ব্যবহার করে সূচক তৈরি করা হয় কমান্ড:

যদিও, কোয়েরি চালানোর আগে, আসুন FT.CREATE-কে আরও ঘনিষ্ঠভাবে দেখে নেওয়া যাক কমান্ড:

  • idx:movie :সূচকের নাম, যা আপনি প্রশ্ন করার সময় ব্যবহার করবেন
  • অন হ্যাশ :সূচীকৃত কাঠামোর ধরন। (উল্লেখ্য যে RediSearch 2.0 শুধুমাত্র Hash স্ট্রাকচারকে সমর্থন করে, কিন্তু এই প্যারামিটারটি RediSearchকে ভবিষ্যতে অন্যান্য স্ট্রাকচারকে ইন্ডেক্স করার অনুমতি দেবে।)
  • PREFIX 1 “মুভি:” :কীগুলির উপসর্গ যা ইন্ডেক্স করা উচিত। এটি একটি তালিকা, তাই যেহেতু আমরা শুধুমাত্র মুভি সূচী করতে চাই:* কী সংখ্যাটি হল 1। আপনি যদি একই ক্ষেত্রগুলির সাথে চলচ্চিত্র এবং টিভি শোগুলিকে সূচী করতে চান তবে আপনি ব্যবহার করতে পারেন:প্রিফিক্স 2 "মুভি:" "tv_show:"<
  • স্কেমা … :সূচীতে স্কিমা, ক্ষেত্র এবং তাদের ধরন সংজ্ঞায়িত করে। আপনি কমান্ডে দেখতে পাচ্ছেন, আমরা TEXT, NUMERIC, এবং TAG, এবং SORTable প্যারামিটার ব্যবহার করছি৷

RediSearch 2.0 ইঞ্জিন PREFIX মান ব্যবহার করে ডাটাবেস স্ক্যান করবে এবং স্কিমা সংজ্ঞার উপর ভিত্তি করে সূচক আপডেট করবে। এটি একটি বিদ্যমান অ্যাপ্লিকেশনে একটি সূচী যোগ করা সহজ করে তোলে যেটি হ্যাশ ব্যবহার করে, আপনার কোড পরিবর্তন করার দরকার নেই।

আপনি নিম্নলিখিত কমান্ডের সাথে সূচী তথ্য দেখতে পারেন:

> FT.INFO idx:movie 1) index_name 2) idx:movie... 46) 1) global_idle    2) (পূর্ণসংখ্যা) 0...

এখন আমরা সূচী ব্যবহার করতে এবং ডাটাবেস অনুসন্ধান করতে প্রস্তুত৷

মুভি ডাটাবেস জিজ্ঞাসা করুন

এই বিভাগের জন্য আপনি FT.SEARCH ব্যবহার করবেন কমান্ড এবং এর সিনট্যাক্স; মনে রাখবেন যে এই ব্লগ পোস্টের লক্ষ্য হল আপনাকে শুরু করা, তাই আমরা মৌলিক বিষয়গুলিতে লেগে থাকি এবং সমস্ত বিবরণে যাই না। RediSearch সম্পর্কে আরও জানতে, ডকুমেন্টেশন এবং টিউটোরিয়াল দেখুন।

সম্পূর্ণ-পাঠ্য অনুসন্ধান প্রশ্নগুলি

RediSearch হল একটি পূর্ণ-পাঠ্য সার্চ ইঞ্জিন, যা অ্যাপ্লিকেশনটিকে Google-এ শক্তিশালী প্রশ্ন চালানোর অনুমতি দেয়। উদাহরণ স্বরূপ, “যুদ্ধ আছে এমন সমস্ত সিনেমা অনুসন্ধান করতে ”-সম্পর্কিত তথ্য, আপনি নিম্নলিখিত কমান্ড চালাবেন:

> FT.SEARCH idx:movie "war" RETURN 3 title release_year rating1) (integer) 12) "movie:11002"3) 1) "title"   2) "Star Wars:Episode V - The Empire Strikes Back" 3) "রিলিজের_বছর"   4) "1980"   5) "রেটিং"   6) "8.7"

আপনি দেখতে পাচ্ছেন, চলচ্চিত্র স্টার ওয়ারস:পর্ব V—দ্য এম্পায়ার স্ট্রাইকস ব্যাক পাওয়া যায়, যদিও আপনি শুধুমাত্র “war শব্দটি ব্যবহার করেছেন "যুদ্ধ এর সাথে মেলে "শিরোনামে। এটি কারণ শিরোনামটি পাঠ্য হিসাবে সূচিত করা হয়েছে, তাই ক্ষেত্রটি টোকেনাইজড এবং স্টেম করা হয়েছে৷

এছাড়াও, কমান্ডটি একটি ক্ষেত্র নির্দিষ্ট করে না, তাই "যুদ্ধ" শব্দটি (এবং সম্পর্কিত শব্দগুলি ) সূচকের সমস্ত পাঠ্য ক্ষেত্রে অনুসন্ধান করা হয়। আপনি যদি নির্দিষ্ট ক্ষেত্র অনুসন্ধান করতে চান, তাহলে আপনি @field ব্যবহার করবেন স্বরলিপি, এখানে দেখানো হয়েছে:

> FT.SEARCH idx:movie "@title:war" রিটার্ন 3 টাইটেল রিলিজ_বছর রেটিং

আপনি এই সাধারণ ডেটাসেটের বিরুদ্ধে অতিরিক্ত পূর্ণ-পাঠ্য অনুসন্ধান অনুসন্ধান চালাতে পারেন, যেমন এখানে প্রদর্শিত হয়েছে (দ্রষ্টব্য:নথিটি সংক্ষিপ্ত রাখতে, প্রশ্নের ফলাফলগুলি দেখানো হয় না):

উপসর্গ মিল:

> FT.SEARCH idx:movie "emp*" রিটার্ন 3 টাইটেল রিলিজ_বছর রেটিং

অস্পষ্ট অনুসন্ধান:

> FT.SEARCH idx:movie "%gdfather%" রিটার্ন 3 টাইটেল রিলিজ_বছর রেটিং

ইউনিয়ন:

> FT.SEARCH idx:movie "war |  %gdfather% " রিটার্ন 3 টাইটেল রিলিজ_বর্ষ রেটিং

আপনি RediSearch ডকুমেন্টেশনে ক্যোয়ারী সিনট্যাক্স সম্পর্কে আরও তথ্য পেতে পারেন।

ট্যাগ ক্ষেত্র অনুসন্ধান

সমস্ত "নাটক" চলচ্চিত্রগুলি খুঁজতে ট্যাগ ফিল্ড "জেনার" ব্যবহার করুন:

> FT.SEARCH idx:movie "@genre:{Drama}" RETURN 3 title release_year rating1) (পূর্ণসংখ্যা) 12) "movie:11003"3) 1) "title"   2) "The Godfather"   3) " মুক্তির_বছর"   4) "1972"   5) "রেটিং"   6) "9.2"

সিনট্যাক্স @field:{value} নির্দেশ করে যে আপনি একটি ট্যাগ ক্ষেত্রে অনুসন্ধান করছেন। আপনি RediSearch ডকুমেন্টেশনে ট্যাগ ফিল্টার সম্পর্কে আরও তথ্য পেতে পারেন।

ডাটাবেস এবং ক্যোয়ারী আপডেট করুন

এখনও অবধি, আপনি যে সমস্ত ডেটা অনুসন্ধান করছেন তা সূচীর আগে তৈরি করা হয়েছিল এবং সূচী তৈরির সময় সূচিত করা হয়েছিল। আসুন একটি নতুন চলচ্চিত্র যোগ করে জিনিসগুলি পরিবর্তন করি:

> HSET "movie:11005" শিরোনাম "স্টার ওয়ারস:পর্ব VI - জেডি রিটার্ন"  প্লট "বিদ্রোহীরা সাম্রাজ্যের ডেথ স্টারকে ধ্বংস করে।" release_year 1983 জেনার "Action" রেটিং 8.3 ভোট 906260 (পূর্ণসংখ্যা) 6

আপনি আগের প্রশ্নগুলি পুনরায় ব্যবহার করতে পারেন:

> FT.SEARCH idx:মুভি "ওয়ার" রিটার্ন 3 শিরোনাম প্রকাশ_বর্ষের রেটিং1) (পূর্ণসংখ্যা) 22) "মুভি:11005"3) 1) "শিরোনাম"   2) "স্টার ওয়ারস:পর্ব VI - জেডি রিটার্ন" 3) "রিলিজ_বর্ষ"   4) "1983"   5) "রেটিং"    6) "8.3"4) "মুভি:11002"5) 1) "শিরোনাম"   2) "স্টার ওয়ার্স:পর্ব V - দ্য এম্পায়ার স্ট্রাইকস ব্যাক"   3) "রিলিজের_বছর"   4) "1980"    5) "রেটিং"   6) "8.7"

আপনি দেখতে পাচ্ছেন, নতুন মুভিটি স্বয়ংক্রিয়ভাবে সূচিত হয়েছে৷

একইভাবে, আপনি যদি একটি চলচ্চিত্র মুছে ফেলেন বা মেয়াদ শেষ করেন, তাহলে সূচী স্বয়ংক্রিয়ভাবে আপডেট হবে, যেমনটি এখানে দেখানো হয়েছে:

> EXPIRE "movie:11002" 15(পূর্ণসংখ্যা) 1

আপনি যদি 15 সেকেন্ড অপেক্ষা করেন এবং অনুসন্ধান ক্যোয়ারী চালান, আপনি দেখতে পাবেন যে মুভিটি সূচী থেকে সরানো হয়েছে৷

এটি বেশ শক্তিশালী যখন আপনি ক্ষণস্থায়ী অনুসন্ধান করতে চান এবং ডাটাবেসকে ডেটা এবং সূচীগুলির মেয়াদ শেষ হতে দিন। আপনি আমাদের ব্লগ পোস্টে ক্ষণস্থায়ী অনুসন্ধান সম্পর্কে আরও তথ্য পেতে পারেন যেখানে ক্ষণস্থায়ী অনুসন্ধানের জন্য কেস রয়েছে৷

আমি এখান থেকে কোথায় যেতে পারি?

এই পোস্টে RediSearch-এর কিছু মৌলিক বিষয় শেয়ার করা হয়েছে, এবং দেখানো হয়েছে যে আপনার অ্যাপ্লিকেশন কোড থেকে ইনডেক্সিং ডেটা কীভাবে স্বচ্ছ। এই কার্যকারিতা RediSearch 2.0-এ নতুন, যেহেতু RediSearch 1.x-এ বিকাশকারীদের বিশেষভাবে FT.ADD ব্যবহার করতে হয়েছিল তথ্য সূচী করার জন্য কমান্ড।

এই ব্লগ পোস্টে আলোচনা করা অনুসন্ধান এবং সূচীকরণ কার্যকারিতা ছাড়াও, RediSearch-এ শক্তিশালী ডেটা একত্রিত করার ক্ষমতাও রয়েছে, যেগুলি RediSearch ডকুমেন্টেশন, টিউটোরিয়াল এবং অনলাইন কোর্সে অন্তর্ভুক্ত রয়েছে৷

টিউটোরিয়ালটিতে একই ডেটা রয়েছে, তবে একটি বড় ডেটাসেট এবং আরও নমুনা প্রশ্ন এবং সমষ্টি সহ। এটিতে একটি অ্যাপ্লিকেশনও রয়েছে যা জাভা, পাইথন এবং Node.js-এর মতো প্রোগ্রামিং ভাষাগুলির সাথে কীভাবে RediSearch ব্যবহার করতে হয় তা দেখায়। আরও জানতে, এই অতিরিক্ত সংস্থানগুলি দেখুন:

  • RediSearch ওয়েব পৃষ্ঠা
  • RediSearch 2.0 টিউটোরিয়াল
  • ব্যবহারের কেস এবং প্রকল্পগুলি পুনরায় আবিষ্কার করুন

  1. Nuxt 3 এবং সার্ভারলেস রেডিস দিয়ে শুরু করা

  2. Apple TV+

  3. ওয়েবের জন্য Android মেসেজ দিয়ে শুরু করা

  4. Xen ভার্চুয়ালাইজেশন দিয়ে শুরু করা