আজ, আমরা RedisTimeSeries 1.6-এর সাধারণ উপলব্ধতা ঘোষণা করতে পেরে আনন্দিত। এই ব্লগ পোস্টটি এখন উপলব্ধ প্রধান নতুন বৈশিষ্ট্যগুলির বিবরণ দেয়৷
৷RedisTimeSeries সম্পর্কে
RedisTimeSeries হল Redis-এর জন্য একটি উচ্চ-কর্মক্ষমতা, মেমরি-প্রথম টাইম-সিরিজ ডেটা স্ট্রাকচার। RedisTimeSeries টাইম সিরিজ মাল্টি-টেন্যান্সি সমর্থন করে (এটি একসাথে অনেক টাইম সিরিজ ধরে রাখতে পারে) এবং একাধিক ক্লায়েন্টকে এক সাথে এই টাইম সিরিজ অ্যাক্সেস করতে পারে। এটি এখন রেডিস স্ট্যাকের অংশ হিসেবেও উপলব্ধ৷
৷RedisTimeSeries 1.6 এ প্রধান নতুন বৈশিষ্ট্যগুলি
- উন্নত কোয়েরি করার ক্ষমতা
- ক্রস-টাইম সিরিজের সমষ্টি
- টাইমস্ট্যাম্প বা নমুনা মান দ্বারা ফলাফল ফিল্টার করা
- কোন লেবেলগুলি পুনরুদ্ধার করতে হবে তা নির্বাচন করা হচ্ছে
- একত্রীকরণ বালতি সারিবদ্ধ করা
নমুনা মুছে ফেলা হচ্ছে
- উন্নত কর্মক্ষমতা
- কীস্পেস বিজ্ঞপ্তি
- Flash-এ Redis-এর জন্য Redis Enterprise সমর্থন
উন্নত প্রশ্ন করার ক্ষমতা
ক্রস-টাইম সিরিজের সমষ্টি
সংস্করণ 1.6 এর আগে, শুধুমাত্র এক ধরনের সমষ্টি সম্ভব ছিল:
- একটি একক সময়ের সিরিজের জন্য -
সমসাময়িক সময়সীমার উপর নমুনা একত্রিত করা।
সংস্করণ 1.6 থেকে, দুটি নতুন একত্রিতকরণ সম্ভব:
- একাধিক সময়ের সিরিজের জন্য -
টাইম সিরিজের সেটে সমান টাইমস্ট্যাম্প সহ নমুনাগুলিকে একত্রিত করা৷ - একাধিক সময়ের সিরিজের জন্য -
প্রথমে, সমসাময়িক টাইমফ্রেমের উপর প্রতিটি টাইম সিরিজ একত্রিত করুন, তারপর, প্রতিটি টাইমফ্রেমের জন্য, সময় সিরিজের সেটের উপর ফলাফলগুলিকে একত্রিত করুন।
আসুন প্রথম নতুন একত্রিতকরণের ধরণটি প্রদর্শন করি। প্রথমে, আসুন দুটি স্টক তৈরি করি এবং 3টি ভিন্ন টাইমস্ট্যাম্পে তাদের দাম যোগ করি:
TS.CREATE stock:A LABELS type stock name A
TS.CREATE stock:B LABELS type stock name B
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:B 1000 120 stock:B 1010 110 stock:B 1020 100
এখন, আমরা টাইমস্ট্যাম্প প্রতি সর্বাধিক স্টক মূল্য পুনরুদ্ধার করতে পারি:
redis:6379> TS.MRANGE - + WITHLABELS FILTER type=stock GROUPBY type
REDUCE max
1) 1) "type=stock" |
FILTER type=stockস্টক মূল্য প্রতিনিধিত্ব করে শুধুমাত্র একটি একক সময় সিরিজের সঙ্গে আমাদের ছেড়ে.
GROUPBY type REDUCE
maxক্লজ টাইম সিরিজকে অভিন্ন টাইপ মান সহ গ্রুপে বিভক্ত করে, এবং তারপর, প্রতিটি টাইমস্ট্যাম্পের জন্য, সর্বাধিক সমষ্টি ব্যবহার করে একই ধরনের মান ভাগ করে এমন সমস্ত সিরিজকে একত্রিত করে।
FILTER label=valueTS.MRANGE এবং TS.MREVRANGE দ্বারা সমর্থিত৷ অতিরিক্ত ফিল্টারিং ধারাগুলিও সমর্থিত (ডকুমেন্টেশন দেখুন)।
এর পরে, আমরা দ্বিতীয় নতুন একত্রিতকরণের ধরন প্রদর্শন করব:
প্রথমে, আসুন দুটি স্টক তৈরি করি এবং 9টি ভিন্ন টাইমস্ট্যাম্পে তাদের দাম যোগ করি।
TS.CREATE stock:A LABELS type stock name A
TS.CREATE stock:B LABELS type stock name B
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:B 1000 120 stock:B 1010 110 stock:B 1020 100
TS.MADD stock:A 2000 200 stock:A 2010 210 stock:A 2020 220
TS.MADD stock:B 2000 220 stock:B 2010 210 stock:B 2020 200
TS.MADD stock:A 3000 300 stock:A 3010 310 stock:A 3020 320
TS.MADD stock:B 3000 320 stock:B 3010 310 stock:B 3020 300
এখন, প্রতিটি স্টকের জন্য, আমরা প্রতি 1000 মিলিসেকেন্ড টাইম ফ্রেমে গড় স্টক মূল্য গণনা করব, এবং তারপর
এর সাথে স্টক পুনরুদ্ধার করবসেই সময়সীমার জন্য সর্বোচ্চ গড়:
redis:6379> TS.MRANGE - + WITHLABELS AGGREGATION avg 1000 FILTER type=stock GROUPBY type REDUCE max
1) 1) "type=stock" |
GROUPBY label REDUCE reducerTS.MRANGE এবং TS.MREVRANGE দ্বারা সমর্থিত৷৷
হ্রাসকারী যোগফল, সর্বনিম্ন বা সর্বোচ্চ হতে পারে।
টাইমস্ট্যাম্প বা নমুনা মান দ্বারা ফলাফল ফিল্টার করা
TS.RANGE, TS.REVRANGE, TS.MRANGE, এবং TS.MREVRANGE ব্যবহার করার সময়, আপনি সবসময় সমস্ত নমুনা পুনরুদ্ধার বা একত্রিত করতে চান না।
[FILTER_BY_TS ts...]ব্যবহার করা হচ্ছে আপনি নির্দিষ্ট টাইমস্ট্যাম্পের তালিকা দ্বারা নমুনা ফিল্টার করতে পারেন।
[FILTER_BY_VALUE min max]ব্যবহার করা হচ্ছে আপনি ন্যূনতম এবং সর্বাধিক মান দ্বারা নমুনা ফিল্টার করতে পারেন।
উদাহরণস্বরূপ, একটি নমুনাযুক্ত মেট্রিক বিবেচনা করুন যেখানে স্বাভাবিক মান -100 এবং 100 এর মধ্যে, কিন্তু মান 9999 খারাপ পরিমাপের একটি ইঙ্গিত হিসাবে ব্যবহৃত হয়৷
TS.CREATE temp:TLV LABELS type temp location TLV
TS.MADD temp:TLV 1000 30 temp:TLV 1010 35 temp:TLV 1020 9999
temp:TLV 1030 40
এখন, আসুন সমস্ত মান পুনরুদ্ধার করি, পরিসীমার বাইরের মানগুলিকে উপেক্ষা করি:
TS.RANGE temp:TLV - + FILTER_BY_VALUE -100 100
এছাড়াও গড় মান পুনরুদ্ধার করা যাক, পরিসীমার বাইরের মানগুলি উপেক্ষা করুন:
TS.RANGE temp:TLV - + FILTER_BY_VALUE -100 100 AGGREGATION avg 1000
কোন লেবেলগুলি পুনরুদ্ধার করতে হবে তা নির্বাচন করা হচ্ছে
TS.MRANGE, TS.MREVRANGE, এবং TS.MGET ব্যবহার করার সময়, আমরা সবসময় ম্যাচিং টাইম সিরিজের সাথে যুক্ত সমস্ত লেবেলের মান চাই না, তবে শুধুমাত্র নির্বাচিত লেবেলের মান চাই।
SELECTED_LABELSকোন লেবেলগুলি পুনরুদ্ধার করতে হবে তা নির্বাচন করার অনুমতি দেয়৷ নিম্নলিখিত সময় সিরিজ এবং ডেটা দেওয়া হয়েছে:
TS.CREATE temp:TLV LABELS type temp location TLV
TS.MADD temp:TLV 1000 30 temp:TLV 1010 35 temp:TLV 1020 9999
temp:TLV 1030 40
মিলে যাওয়া টাইম সিরিজের সাথে যুক্ত সমস্ত লেবেল পেতে আমরা
WITHLABELSব্যবহার করব :
redis:6379> TS.MGET লেবেল ফিল্টার প্রকার=temp
1) 1) "temp:TLV" |
কিন্তু ধরুন আমরা শুধুমাত্র অবস্থান চাই, আমরা
SELECTED_LABELS:ব্যবহার করতে পারি
redis:6379> TS.MGET SELECTED_LABELS location FILTER type=temp
1) 1) "temp:TLV" |
একত্রীকরণ বালতি সারিবদ্ধ করা
ধরুন আমরা গড় দৈনিক তাপমাত্রা পেতে চাই, কিন্তু আমাদের 'দিন' শুরু হয় 06:00 এ। এই ক্ষেত্রে, আমরা 00:00 থেকে 23:59-এর পরিবর্তে ব্যবধানগুলিকে 06:00 থেকে 05:59 পর্যন্ত সারিবদ্ধ করতে চাই।
TS.RANGE, TS.REVRANGE, TS.MRANGE, এবং TS.MREVRANGE ব্যবহার করার সময়, এখন
ALIGNব্যবহার করে অনুরোধ করা শুরু, শেষ বা নির্দিষ্ট টাইমস্ট্যাম্পের সাথে একত্রিত বালতি সারিবদ্ধ করা সম্ভব। .
সারিবদ্ধতা প্রদর্শন করতে, আসুন নিম্নলিখিত ডেটা যোগ করি:
TS.CREATE stock:A LABELS type stock name A
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:A 1030 200 stock:A 1040 210 stock:A 1050 220
TS.MADD stock:A 1060 300 stock:A 1070 310 stock:A 1080 320
এরপর, আমরা
ALIGNব্যবহার না করেই একত্রিত করব (যার অর্থ ডিফল্ট প্রান্তিককরণ:0)
redis:6379> TS.RANGE stock:A - + AGGREGATION min 20
1) 1) (integer) 1000 |
এবং এখন
ALIGNএর সাথে :
redis:6379> TS.RANGE স্টক:A – + ALIGN 10 AGGREGATION min 20
1) 1) (integer) 990 |
ALIGNসেট করা হচ্ছে 10 এর মানে হল একটি বালতি 10 এ শুরু হওয়া উচিত এবং সমস্ত বালতি (প্রতিটি 20 মিলিসেকেন্ডের সময়কালের সাথে) সেই অনুযায়ী সারিবদ্ধ করা হয়৷
যখন রেঞ্জ কোয়েরির জন্য স্টার্ট টাইমস্ট্যাম্প স্পষ্টভাবে বলা হয় ('-' নয়), তখন '-' বা '
startএ সারিবদ্ধ সেট করে সেই সময়ে ALIGN সেট করাও সম্ভব। '।
redis:6379> TS.RANGE স্টক:A 5 + ALIGN – AGGREGATION min 20
1) 1) (integer) 985 |
একইভাবে, যখন রেঞ্জ কোয়েরির শেষ টাইমস্ট্যাম্পটি স্পষ্টভাবে বলা হয় (‘+’ নয়), তখন
ALIGNসেট করাও সম্ভব। '+' বা 'শেষ' এ সারিবদ্ধ করে সেট করে সেই সময়ে।
নমুনা মুছে ফেলা হচ্ছে
TS.DEL দুটি টাইমস্ট্যাম্পের মধ্যে একটি নির্দিষ্ট সময়ের সিরিজের নমুনাগুলি মুছে ফেলার অনুমতি দেয়৷
উদাহরণস্বরূপ,
TS.DEL stock:A 1020 10501020 এবং 1050 (অন্তর্ভুক্ত) মধ্যে টাইমস্ট্যাম্প সহ সমস্ত নমুনা মুছে ফেলবে। ফেরত দেওয়া মান হল মুছে ফেলা নমুনার সংখ্যা।
উন্নত কর্মক্ষমতা
অনেকগুলি অপ্টিমাইজেশান প্রয়োগ করা হয়েছে, এবং বেশিরভাগ প্রশ্নগুলি এখন RedisTimeSeries 1.4 এর তুলনায় অনেক দ্রুত কার্যকর হবে৷
নিম্নলিখিত সারণীটি TSBS প্রশ্নগুলির জন্য (যা আমরা এখানে বর্ণনা করেছি) একটি একক নোডে অর্জনযোগ্য প্রতি সেকেন্ডে প্রশ্নের সংখ্যার বিবরণ দেয়। টেবিলটি শুধুমাত্র TSBS কোয়েরির উপসেট তালিকাভুক্ত করে যা সংস্করণ 1.4-এ সমর্থিত ছিল।
কোয়েরির ধরন | 1.4 প্রশ্ন/সেকেন্ড | v1.6 প্রশ্ন/সেকেন্ড | % পরিবর্তন (উচ্চতর-ভালো) |
tsbs-scale100_cpu-max-all-1 | 1388 | 1500 | 8.07% |
tsbs-scale100_double-groupby-1 | 100 | 108 | 8.00% |
tsbs-scale100_groupby-orderby-limit | 793 | 1282 | 61.66% |
tsbs-scale100_single-groupby-1-1-1 | 13448 | 21347 | 58.74% |
tsbs-scale100_single-groupby-1-1-12 | 2383 | 3921 | 64.54% |
আমরা 8% থেকে 65% উন্নতি লক্ষ্য করতে পারি RedisTimeSeries 1.4.
এর তুলনায় প্রতি সেকেন্ডে প্রশ্নের সংখ্যায়কীস্পেস বিজ্ঞপ্তি
Redis কীস্পেস বিজ্ঞপ্তিগুলি Redis ক্লায়েন্টদের Pub/Sub চ্যানেলে সদস্যতা নিতে দেয় যাতে কোনোভাবে Redis ডেটা সেটকে প্রভাবিত করে এমন ইভেন্টগুলি পেতে। আপনি, উদাহরণস্বরূপ, এই বিজ্ঞপ্তিগুলির সাথে একটি ফাংশন ট্রিগার করতে RedisGears ব্যবহার করতে পারেন৷
৷
উদাহরণ হিসাবে, একটি টাইম সিরিজ ভবিষ্যদ্বাণী বা অসঙ্গতি সনাক্তকারী প্রয়োগ করা সম্ভব যা নমুনার স্ট্রীম শোনে এবং রিয়েল-টাইম ভবিষ্যদ্বাণী এবং সতর্কতা তৈরি করে।
উদাহরণস্বরূপ, এই পরীক্ষাটি দেখুন যা বিভিন্ন RedisTimeSeries কমান্ডের সদস্যতা নেয় এবং ইভেন্ট তৈরি করে।
Flash-এ Redis-এর জন্য Redis Enterprise সমর্থন
সংস্করণ 1.6 থেকে, RedisTimeSeries ফ্ল্যাশের একটি Redis-এ চলতে পারে, তবে এটি লক্ষ করা গুরুত্বপূর্ণ যে RoF কী স্তরে প্রয়োগ করা হয়েছে। যথা, পুরো সময়ের সিরিজের মান হয় ফ্ল্যাশ বা র্যামে থাকে।
RedisTimeSeries হল Redis Stack এর অংশ
RedisTimeSeries এখন Redis Stack এর অংশ। আপনি macOS, Ubuntu, বা Redhat-এর জন্য সর্বশেষ Redis Stack Server বাইনারী ডাউনলোড করতে পারেন, অথবা Docker, Homebrew, বা Linux এর সাথে ইন্সটল করতে পারেন।
RedisInsight-এর সাথে টাইম সিরিজ ডেটা ভিজ্যুয়ালাইজ করুন
RedisInsight হল ডেভেলপারদের জন্য একটি ভিজ্যুয়াল টুল যা Redis বা Redis Stack ব্যবহার করে ডেভেলপমেন্টের সময় RedisTimeSeries থেকে ডেটা অন্বেষণ করার একটি চমৎকার উপায় প্রদান করে।
আপনি সময় সিরিজের প্রশ্নগুলি চালাতে পারেন এবং গ্রাফিক্যাল ইউজার ইন্টারফেস থেকে সরাসরি ফলাফলগুলি পর্যবেক্ষণ করতে পারেন। RedisInsight এখন RedisTimeSeries ক্যোয়ারী ফলাফল কল্পনা করতে পারে।
এছাড়াও, RedisTimeSeries ইন্টারেক্টিভভাবে শেখার জন্য RedisInsight-এ রয়েছে দ্রুত নির্দেশিকা এবং টিউটোরিয়াল।
redis.io এবং developer.redis.com-এ RedisTimeSeries সম্পর্কে আরও জানুন।