2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
रेडिस् उच्च-प्रदर्शन-कुंजी-मूल्यक-भण्डारण-प्रणाली अस्ति, तस्य बहुविध-दत्तांश-संरचना च सन्देश-पङ्क्तौ कार्यान्वयनार्थं आदर्श-विकल्पं करोति । अयं लेखः एकं कुशलं सन्देशपङ्क्तिप्रणालीं कार्यान्वितुं Redis इत्यस्य List, Pub/Sub तथा Stream data structures इत्यस्य उपयोगः कथं करणीयः इति अन्वेषयिष्यति ।
सन्देशपङ्क्तिः अनुप्रयोगानाम् मध्ये संचारस्य तन्त्रम् अस्ति यत् अनुप्रयोगानाम् अतुल्यकालिकरूपेण सन्देशान् प्रेषयितुं प्राप्तुं च शक्नोति । वितरितप्रणालीषु सेवाघटकानाम् वियुग्मनं कर्तुं प्रणाल्याः मापनीयतां विश्वसनीयतां च सुधारयितुम् अस्य उपयोगः भवति ।
List Redis इत्यस्मिन् मूलभूतदत्तांशसंरचनेषु अन्यतमम् अस्ति तथा च सरलसन्देशपङ्क्तिरूपेण उपयोक्तुं शक्यते ।
LPUSH
आदेशः सन्देशं List इत्यस्य शिरसि निवेशयति ।BRPOP
आदेशः List इत्यस्य अन्ते सन्देशं अवरुद्धं करोति ।// 生产者
jedis.lpush("queue", "message");
// 消费者
String message = jedis.brpop(0, "queue");
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");
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));
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)
उपभोक्तृसमूहाः Redis Stream इत्यस्य एकं विशेषता अस्ति यत् बहुभ्यः उपभोक्तृदृष्टान्तेभ्यः स्वकार्यस्य समन्वयं कर्तुं तथा च Stream मध्ये सन्देशान् संयुक्तरूपेण उपभोक्तुं शक्नोति ।
redis.call('XGROUP', 'CREATE', streamKey, groupName, '$', 'MKSTREAM')
redis.call('XREADGROUP', 'GROUP', groupName, consumerName, 'BLOCK', 5000, 'STREAMS', streamKey, '>')
सन्देशपङ्क्तिं कार्यान्वितुं Lua स्क्रिप्ट् तथा Redis Stream इत्येतयोः उपयोगेन Redis इत्यस्य उच्चप्रदर्शनस्य तथा Lua स्क्रिप्ट् इत्यस्य परमाणुत्वस्य पूर्णं उपयोगं कृत्वा कुशलं विश्वसनीयं च सन्देशपङ्क्तिप्रणालीं निर्मातुं शक्यते उपभोक्तृसमूहानां विशेषता सन्देशपङ्क्तयः उपलब्धतां मापनीयतां च अधिकं वर्धयति ।
Redis सन्देशपङ्क्तयः कार्यान्वितुं बहुविधमार्गान् प्रदाति, येषु प्रत्येकस्य प्रयोज्यपरिदृश्यानि सन्ति । सूची सरलपङ्क्तिआवश्यकतानां कृते उपयुक्ता अस्ति, Pub/Sub प्रकाशन/सदस्यता मोडस्य कृते उपयुक्ता अस्ति, तथा च Stream अधिकशक्तिशालिनः सन्देशपङ्क्तिकार्यं प्रदाति, यत्र स्थायित्वं, उपभोक्तृसमूहाः अन्यविशेषताः च सन्ति