प्रौद्योगिकी साझेदारी

Redis इत्यस्य उपयोगेन सन्देशपङ्क्तयः कार्यान्वितुं: List, Pub/Sub तथा Stream इत्यस्य अभ्यासः

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


संक्षेपः

रेडिस् उच्च-प्रदर्शन-कुंजी-मूल्यक-भण्डारण-प्रणाली अस्ति, तस्य बहुविध-दत्तांश-संरचना च सन्देश-पङ्क्तौ कार्यान्वयनार्थं आदर्श-विकल्पं करोति । अयं लेखः एकं कुशलं सन्देशपङ्क्तिप्रणालीं कार्यान्वितुं Redis इत्यस्य List, Pub/Sub तथा Stream data structures इत्यस्य उपयोगः कथं करणीयः इति अन्वेषयिष्यति ।

1. सन्देशपङ्क्तिः मूलभूताः अवधारणाः

सन्देशपङ्क्तिः अनुप्रयोगानाम् मध्ये संचारस्य तन्त्रम् अस्ति यत् अनुप्रयोगानाम् अतुल्यकालिकरूपेण सन्देशान् प्रेषयितुं प्राप्तुं च शक्नोति । वितरितप्रणालीषु सेवाघटकानाम् वियुग्मनं कर्तुं प्रणाल्याः मापनीयतां विश्वसनीयतां च सुधारयितुम् अस्य उपयोगः भवति ।

2. सन्देशपङ्क्तिरूपेण Redis इत्यस्य लाभाः

  • उच्च प्रदर्शनम्: रेडिस् अत्यन्तं द्रुतपठनलेखनवेगयुक्तं स्मृति-आधारितं कार्यम् अस्ति ।
  • विभिन्नानि दत्तांशसंरचनानि: विभिन्नानां उपयोगपरिदृश्यानां कृते उपयुक्तानां List, Set, Pub/Sub इत्यादीनां विविधदत्तांशसंरचनानां समर्थनं करोति ।
  • दृढता: दत्तांशस्य स्थायित्वं समर्थयन्तु तथा च सन्देशाः नष्टाः न भवन्ति इति सुनिश्चितं कुर्वन्तु।
  • परमाणुक्रियाः: सन्देशपङ्क्तिसञ्चालनस्य स्थिरतां सुनिश्चित्य लेनदेनस्य परमाणुसञ्चालनस्य च समर्थनं कुर्वन्तु।

3. सन्देशपङ्क्तिं कार्यान्वितुं List इत्यस्य उपयोगं कुर्वन्तु

List Redis इत्यस्मिन् मूलभूतदत्तांशसंरचनेषु अन्यतमम् अस्ति तथा च सरलसन्देशपङ्क्तिरूपेण उपयोक्तुं शक्यते ।

३.१ मूलभूतक्रियाः

  • उत्पादकः:उपयुञ्जताम्‌LPUSHआदेशः सन्देशं List इत्यस्य शिरसि निवेशयति ।
  • उपभोक्ता:उपयुञ्जताम्‌BRPOPआदेशः List इत्यस्य अन्ते सन्देशं अवरुद्धं करोति ।

३.२ कार्यान्वयनस्य उदाहरणम्

// 生产者
jedis.lpush("queue", "message");

// 消费者
String message = jedis.brpop(0, "queue");
  • 1
  • 2
  • 3
  • 4
  • 5

4. publish/subscribe model इत्यस्य कार्यान्वयनार्थं Pub/Sub इत्यस्य उपयोगं कुर्वन्तु

Pub/Sub इति सन्देशप्रकाशनस्य सदस्यतायाः च प्रतिरूपं यत् एकतः बहुभ्यः सन्देशवितरणं प्राप्तुं शक्नोति ।

४.१ मूलभूतक्रियाः

  • उद्घोषकः:उपयुञ्जताम्‌PUBLISHआदेशः निर्दिष्टे चैनले सन्देशान् प्रकाशयति ।
  • ग्राहक:उपयुञ्जताम्‌SUBSCRIBEचैनलस्य सदस्यतां प्राप्तुं सन्देशान् प्राप्तुं च आदेशः।

४.२ कार्यान्वयनस्य उदाहरणम्

// 发布者
jedis.publish("channel", "message");

// 订阅者
jedis.subscribe(new JedisPubSub() {
    @Override
    public void onMessage(String channel, String message) {
        System.out.println("Received: " + message);
    }
}, "channel");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. सन्देशपङ्क्तिं कार्यान्वितुं Stream इत्यस्य उपयोगं कुर्वन्तु

Stream इति Redis 5.0 इत्यस्मिन् प्रवर्तितं नूतनं निरन्तरं दत्तांशसंरचना अस्ति, यत् विशेषतया सन्देशपङ्क्तिः, लॉगिंग् कार्याणि च कृते विनिर्मितम् अस्ति ।

५.१ मूलभूतक्रियाः

  • उत्पादकः:उपयुञ्जताम्‌XADDआदेशः Stream मध्ये सन्देशं योजयति ।
  • उपभोक्ता:उपयुञ्जताम्‌XREADआदेशः Stream इत्यस्मात् सन्देशान् पठति ।

५.२ कार्यान्वयनस्य उदाहरणम्

// 生产者
String messageId = jedis.xadd("stream", StreamEntry.entry("field1", "value1"));

// 消费者
List<Map.Entry<String, String>> messages = jedis.xread(StreamsXReadParams.STREAMS.entry("stream", messageId));
  • 1
  • 2
  • 3
  • 4
  • 5

5.3 कुशलसन्देशपङ्क्तिं कार्यान्वितुं Lua स्क्रिप्ट् तथा Redis Stream इत्येतयोः उपयोगं कुर्वन्तु

1. रेडिस् मध्ये लुआ लिपिषु लाभाः
  • परमाणुत्वम्: Lua स्क्रिप्ट् Redis इत्यस्य अन्तः निष्पादिताः भवन्ति, येन कार्याणां परमाणुता सुनिश्चिता भवति ।
  • प्रदर्शनम्‌: संजालस्य गोलयात्रायाः संख्यां न्यूनीकरोति तथा च निष्पादनदक्षतायां सुधारं करोति।
  • लचीलापनम्: भिन्न-भिन्न-व्यापार-आवश्यकतानां अनुकूलतायै जटिल-तर्कं लिखितुं शक्नोति।
2. Redis Stream इत्यस्य संचालनार्थं Lua स्क्रिप्ट् इत्यस्य उपयोगं कुर्वन्तु
२.१ मूलभूतक्रियाः
  • उत्पादकः:उपयुञ्जताम्‌XADDआदेशः Stream मध्ये सन्देशं योजयति ।
  • उपभोक्ता:उपयुञ्जताम्‌XREADआदेशः Stream इत्यस्मात् सन्देशान् पठति ।
  • उपभोक्तृसमूहः:उपयुञ्जताम्‌XREADGROUPआदेशः उपभोक्तृसमूहस्य कार्यं कार्यान्वयति ।
२.२ लुआ लिपि उदाहरणम्

उत्पादकानां उपभोक्तृणां च मूलभूतसञ्चालनानि कार्यान्वितुं निम्नलिखितम् सरलं लुआ लिपि उदाहरणम् अस्ति ।

-- 生产者脚本
local function produce(streamKey, message)
    local result = redis.call('XADD', streamKey, '*', 'message', message)
    return result
end

-- 消费者脚本
local function consume(streamKey, groupName, consumerName)
    local result = redis.call('XREADGROUP', 'GROUP', groupName, consumerName, 'BLOCK', 5000, 'STREAMS', streamKey, 0)
    return result
end

-- 调用脚本
local streamKey = 'myStream'
local message = 'Hello, Redis Stream!'
local groupName = 'myGroup'
local consumerName = 'myConsumer'

-- 生产消息
local messageId = produce(streamKey, message)

-- 消费消息
local messages = consume(streamKey, groupName, consumerName)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3. उपभोक्तृसमूहानां उपयोगः

उपभोक्तृसमूहाः Redis Stream इत्यस्य एकं विशेषता अस्ति यत् बहुभ्यः उपभोक्तृदृष्टान्तेभ्यः स्वकार्यस्य समन्वयं कर्तुं तथा च Stream मध्ये सन्देशान् संयुक्तरूपेण उपभोक्तुं शक्नोति ।

३.१ उपभोक्तृसमूहस्य निर्माणम्
redis.call('XGROUP', 'CREATE', streamKey, groupName, '$', 'MKSTREAM')
  • 1
३.२ उपभोक्तृसमूहानां पठनम्
redis.call('XREADGROUP', 'GROUP', groupName, consumerName, 'BLOCK', 5000, 'STREAMS', streamKey, '>')
  • 1

4. सारांशः

सन्देशपङ्क्तिं कार्यान्वितुं Lua स्क्रिप्ट् तथा Redis Stream इत्येतयोः उपयोगेन Redis इत्यस्य उच्चप्रदर्शनस्य तथा Lua स्क्रिप्ट् इत्यस्य परमाणुत्वस्य पूर्णं उपयोगं कृत्वा कुशलं विश्वसनीयं च सन्देशपङ्क्तिप्रणालीं निर्मातुं शक्यते उपभोक्तृसमूहानां विशेषता सन्देशपङ्क्तयः उपलब्धतां मापनीयतां च अधिकं वर्धयति ।

5. सावधानताः
  • निष्पादनात् पूर्वं Lua स्क्रिप्ट् पूर्णतया परीक्षिता इति सुनिश्चितं कुर्वन्तु ।
  • सन्देशस्य स्थायित्वं सुरक्षां च विचार्य Redis स्थायित्वरणनीतिं समुचितरूपेण विन्यस्यताम् ।
  • उत्पादनवातावरणे प्रणाल्याः स्थिरसञ्चालनं सुनिश्चित्य सन्देशपङ्क्तयः कार्यक्षमतां स्थितिं च निरीक्षयन्तु ।
6. सन्दर्भाः

6. सारांशः

Redis सन्देशपङ्क्तयः कार्यान्वितुं बहुविधमार्गान् प्रदाति, येषु प्रत्येकस्य प्रयोज्यपरिदृश्यानि सन्ति । सूची सरलपङ्क्तिआवश्यकतानां कृते उपयुक्ता अस्ति, Pub/Sub प्रकाशन/सदस्यता मोडस्य कृते उपयुक्ता अस्ति, तथा च Stream अधिकशक्तिशालिनः सन्देशपङ्क्तिकार्यं प्रदाति, यत्र स्थायित्वं, उपभोक्तृसमूहाः अन्यविशेषताः च सन्ति
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

7. सन्दर्भाः