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

७.११ दिवसीयशिक्षणं चेक-इन——प्रारम्भिकशिक्षणं रेडिस् (६)

2024-07-12

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

७.११ दिवसस्य अध्ययनं चेक-इन

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

1. रीडिस् व्यवहारः

व्यवहारस्य अवधारणा एसीआईडी ​​गुणाः च

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
डाटाबेस स्तरीय लेनदेन

दत्तांशकोशस्तरस्य व्यवहारः एकः कार्यसमूहः अस्ति यः सर्वे सफलतया निष्पादयन्ति अथवा तेषु कश्चन अपि न निष्पादयति ।

दत्तांशकोशव्यवहारस्य चत्वारि प्रमुखाणि लक्षणानि

  • उ: परमाणुः, परमाणुता, सर्वान् SQL परमाणुकार्य-एककरूपेण निष्पादयति, यावान् ते सर्वे निष्पादिताः सन्ति अथवा तेषु कश्चन अपि निष्पादितः नास्ति;
  • ग: सुसंगतः, व्यवहारस्य समाप्तेः अनन्तरं सर्वेषां दत्तांशस्य स्थितिः सुसंगता भवति, अर्थात् यावत् यावत् क खातेतः 100 घटितं भवति तावत् यावत् ख खाते 100 योजितं भविष्यति
  • I: पृथक्करणम्, यदि बहुविधव्यापाराः समवर्तीरूपेण निष्पादिताः भवन्ति तर्हि प्रत्येकेन लेनदेनेन कृताः परिवर्तनाः अन्येभ्यः व्यवहारेभ्यः पृथक्करणं भवितुमर्हति;
  • D: अवधिः, स्थायित्वं, अर्थात् व्यवहारस्य समाप्तेः अनन्तरं दत्तांशकोशदत्तांशस्य परिवर्तनं निरन्तरं संगृह्यते।

रेडिसः व्यवहारः

Redis व्यवहारः आदेशानां समुच्चयः अस्ति व्यवहारे सर्वे आदेशाः क्रमबद्धाः भविष्यन्ति तथा च आदेशानां श्रृङ्खला एकवारं, क्रमिकरूपेण, अनन्यरूपेण च निष्पादिता भविष्यति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

रेडिस्-व्यवहारस्य त्रयः प्रमुखाः लक्षणाः

  • पृथक् क्वारेन्टाइन परिचालन : व्यवहारे सर्वे आदेशाः क्रमेण क्रमबद्धाः निष्पादिताः च भविष्यन्ति। व्यवहारस्य निष्पादनस्य समये अन्यैः ग्राहकैः प्रेषितैः आदेशानुरोधैः तस्य बाधा न भविष्यति;
  • एकान्तस्तरस्य अवधारणा नास्ति: पङ्क्तौ आदेशाः यावत् ते न प्रस्तूयन्ते तावत् वास्तविकरूपेण निष्पादिताः न भविष्यन्ति, यतः व्यवहारस्य प्रस्तुतीकरणात् पूर्वं कोऽपि निर्देशः वास्तवतः निष्पादितः न भविष्यति, अतः "व्यवहारे अद्यतनं द्रष्टुं व्यवहारस्य अन्तः प्रश्नः, बहिः च प्रश्नः" नास्ति व्यवहारः" Can’t see” इति ।
  • परमाणुत्वस्य गारण्टी नास्ति: यदि कश्चन आदेशः समाने redis व्यवहारे निष्पादयितुं असफलः भवति तर्हि अनन्तरं आदेशाः अद्यापि रोलबैक् विना निष्पादिताः भविष्यन्ति;

रेडिस लेनदेन निष्पादनस्य त्रयः चरणाः

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • चालू कुर्वन्तु:इत्यनेनMULTIव्यवहारं आरभत;
  • दलेन सह सम्मिलितं भवन्तु: अनेकाः आदेशाः एकस्मिन् लेनदेने पङ्क्तिबद्धाः कुर्वन्तु एते आदेशाः प्राप्तेः तत्क्षणमेव निष्पादिताः भविष्यन्ति, अपितु निष्पादनस्य प्रतीक्षया व्यवहारपङ्क्तौ स्थापिताः भविष्यन्ति
  • हेति:आश्रित्यEXECआदेशः व्यवहारं प्रेरयति;

रेडिस लेनदेनस्य मूलभूतसञ्चालनम्

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
बहु、Exec、त्याग

लेनदेन निवेशतःMultiयदा आदेशः आरभ्यते तदा प्रविष्टाः आदेशाः एकैकशः आदेशबफरपङ्क्तौ धक्कायन्ते, यावत्...Exec तदनन्तरं Redis पूर्वस्मिन् आदेशबफरपङ्क्तौ आदेशान् क्रमेण निष्पादयिष्यति ।दलनिर्माणप्रक्रियायाः समये भवान् उत्तीर्णः भवितुम् अर्हतिdiscardआगच्छन्तु दलं त्यजन्तु।

उदाहरण

127.0.0.1:6379> set t1 1
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set id 12
QUEUED
127.0.0.1:6379(TX)> get id
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> EXEC
1) OK
2) "12"
3) (integer) 2
4) (integer) 3
5) "3"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

व्यवहारं परित्यजन्तु

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> set age 29
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> DISCARD
OK
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

सर्वे एकत्र उपविष्टाः

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> set email
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

सूचना
आदेशसमूहे अशुद्धनिर्देशाः सन्ति (ध्यायन्तु यत् ते सर्वे सम्बद्धाः सन्ति, सर्वे च विफलाः भवन्ति) ।

प्रत्येकं अन्यायस्य स्वामिः भवति, प्रत्येकं ऋणस्य स्वामिः भवति

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set age 11
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> set email [email protected]
QUEUED
127.0.0.1:6379(TX)> incr email
QUEUED
127.0.0.1:6379(TX)> get age
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) (integer) 5
3) OK
4) (error) ERR value is not an integer or out of range
5) "11"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

सूचना
रनटाइम् दोषाणां कृते अर्थात् अव्याकरणदोषाणां कृते सम्यक् आदेशाः निष्पादिताः भविष्यन्ति, अशुद्धाः आदेशाः च त्रुटिं प्रत्यागमिष्यन्ति ।

2. रेडिस समूहः

स्वामी-दास प्रतिकृति

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अवलोकनम्
विद्यमान उद्यमानाम् मध्ये ८०% कम्पनयः अधिकतया रेडिस् स्वतन्त्रसेवानां उपयोगं कुर्वन्ति वास्तविकपरिदृश्येषु एकस्मिन् नोड् इत्यत्र रेडिस् जोखिमानां प्रवणाः भवन्ति ।

समस्यानां सम्मुखीभवन्:

  • यन्त्रस्य विकारः । वयं Redis सर्वरे परिनियोजयामः यदा यन्त्रस्य विफलता भवति तदा अस्माभिः अन्यस्मिन् सर्वरे प्रवासनं करणीयम् अस्ति तथा च दत्तांशः समन्वयितः इति सुनिश्चितं कर्तव्यम् ।
  • क्षमता अड़चन। यदा अस्माकं Redis स्मृतिः विस्तारयितुं आवश्यकं भवति तदा 16G स्मृतितः 64G यावत्, एकं यन्त्रं निश्चितरूपेण तत् तृप्तुं न शक्नोति। अवश्यं भवन्तः नूतनं 128G यन्त्रं क्रेतुं शक्नुवन्ति।

समाधानं

वितरितदत्तांशकोशस्य अधिकां भण्डारणक्षमतां प्राप्तुं उच्चसमवर्तीप्रवेशं च सहितुं वयं मूलकेन्द्रीकृतदत्तांशकोशस्य दत्तांशं अन्येषु बहुषु संजालनोड्-मध्ये संगृह्णीमः

सूचना
एतस्याः एक-नोड्-समस्यायाः समाधानार्थं रेडिस्-इत्यस्य उच्च-उपलब्धतां प्राप्तुं, दत्तांशस्य सेवानां च उच्च-उपलब्धतां सुनिश्चित्य दत्तांशस्य अनावश्यक-बैकअपं प्राप्तुं प्रतिकृतिं कर्तुं अन्येषु नोड्-मध्ये आँकडानां बहुप्रतियाः अपि परिनियोजयिष्यति

स्वामी-दासप्रतिकृतिः किम्

Master-slave replication इति एकस्मात् Redis सर्वरात् अन्येभ्यः Redis सर्वरेभ्यः आँकडानां प्रतिलिपिं कर्तुं निर्दिशति । पूर्वं मास्टर नोड् इति उच्यते, उत्तरं च स्लेव नोड् इति कथ्यते Data replication एकदिशा भवति, तथा च केवलं master node तः slave node यावत् भवितुम् अर्हति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
स्वामी-दास-प्रतिकृतिस्य भूमिका

  • डेटा अतिरेकता: मास्टर-स्लेव् प्रतिकृतिः आँकडानां हॉट् बैकअपं कार्यान्वयति, यत् स्थायित्वस्य अतिरिक्तं दत्तांश-अतिरिक्तता-विधिः अस्ति ।
  • पुनर्प्राप्ति: यदा मुख्यनोड् इत्यत्र समस्या भवति तदा दासनोड् द्रुतदोषपुनर्प्राप्तिम् प्राप्तुं सेवां प्रदातुं शक्नोति;
  • भारसंतुलनम्: master-slave replication इत्यस्य आधारेण, पठनस्य लेखनस्य च पृथक्करणेन सह, master node लेखनसेवाः प्रदातुं शक्नोति तथा च slave nodes पठनसेवाः प्रदातुं शक्नुवन्ति (अर्थात् Redis data लिखे सति, अनुप्रयोगः master node इत्यनेन सह सम्बद्धः भवेत् , तथा च Redis-दत्तांशं पठन्, अनुप्रयोगः दास-नोड्-सङ्गणकेन सह सम्बद्धः भवेत्), विशेषतः तेषु परिदृश्येषु यत्र लेखनं न्यूनं भवति, अधिकं पठनं च भवति, बहु-दास-नोड्-द्वारा पठन-भारस्य साझेदारी-करणेन Redis-सर्वरस्य समवर्तीत्वं बहुधा वर्धयितुं शक्यते .
  • उच्च उपलब्धता आधारशिला: उपर्युक्तकार्यस्य अतिरिक्तं, मास्टर-स्लेव् प्रतिकृतिः अपि सेन्टिनेल्स् तथा क्लस्टर्स् इत्येतयोः कार्यान्वयनस्य आधारः अस्ति अतः मास्टर-स्लेव् प्रतिकृतिः रेडिस उच्च उपलब्धतायाः आधारः अस्ति ।

मास्टर-दास प्रतिकृति वातावरण सेटअप

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
विन्याससञ्चिकां लिखन्तु
नूतनं redis6379.conf रचयन्तु

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
  • 1
  • 2
  • 3
  • 4

नूतनं redis6380.conf रचयन्तु

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
  • 1
  • 2
  • 3
  • 4

नूतनं redis6381.conf रचयन्तु

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
  • 1
  • 2
  • 3
  • 4

त्रीणि redis सर्वराणि आरभत

./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf
  • 1
  • 2
  • 3

प्रणालीप्रक्रियाः पश्यन्तु

[root@localhost src]# ps -ef |grep redis
root    40737    1  0 22:05 ?     00:00:00 ./redis-server *:6379
root    40743    1  0 22:05 ?     00:00:00 ./redis-server *:6380
root    40750    1  0 22:05 ?     00:00:00 ./redis-server *:6381
root    40758  40631  0 22:05 pts/0   00:00:00 grep --color=auto redis
  • 1
  • 2
  • 3
  • 4
  • 5

त्रयाणां होस्ट्-सञ्चालनस्य स्थितिं पश्यन्तु

#打印主从复制的相关信息
./redis-cli -p 6379
./redis-cli -p 6380
./redis-cli -p 6381
127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

दासदत्तांशकोशेन सुसज्जितं किन्तु मुख्यदत्तांशकोशेन न

वाक्य रचना प्रारूपः : १.

slaveof  <ip> <port>
  • 1

उदाहरण:

६३८० तथा ६३८१ दिनाङ्के निष्पादितम् ।

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK
  • 1
  • 2

होस्ट् इत्यत्र लिखित्वा स्लेव् इत्यत्र दत्तांशं पठन्तु

set k1 v1
  • 1

स्वामी-दास-प्रतिकृति-सिद्धान्तस्य विश्लेषणम्

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
स्वामी-दास-प्रतिकृतिः ३ चरणेषु विभक्तुं शक्यते

  • संयोजनस्थापनचरणम् (अर्थात् सज्जीकरणचरणम्) २.
  • दत्तांश समन्वयन चरण
  • आदेश प्रसार चरण

प्रतिलिपिप्रक्रिया मोटेन ६ प्रक्रियासु विभक्ता अस्ति

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  1. मास्टर नोड् (मास्टर) सूचनां रक्षन्तु।
    slaveof इत्यस्य निष्पादनस्य अनन्तरं स्थितिसूचनाः पश्यन्तु
info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. दास-नोड् (दासः) प्रतिसेकण्ड-कार्यस्य माध्यमेन प्रतिकृति-सम्बद्धं तर्कं निर्वाहयति यत् प्रत्येकं सेकण्डं चालयति यदा निर्धारित-कार्यं नूतनं मुख्य-नोड् अस्ति इति आविष्करोति तदा नोड्-सहितं संजाल-सम्बद्धतां स्थापयितुं प्रयतते
    अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
  2. दास-नोड्-मास्टर-नोड्-योः मध्ये जालसंयोजनं स्थापयन्तु
    स्लेव् नोड् सॉकेट् स्थापयिष्यति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
4. ping आदेशं प्रेषयन्तु

संयोजनस्य सफलतया स्थापनायाः अनन्तरं दासनोड् प्रथमसञ्चारस्य कृते ping अनुरोधं प्रेषयति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

परिणाम:

  • मास्टर-स्लेव्-योः मध्ये नेटवर्क्-सॉकेट् उपलब्धम् अस्ति वा इति अन्वेष्टुम् ।
  • मुख्यनोड् सम्प्रति आदेशान् स्वीकुर्वितुं शक्नोति वा इति अन्वेष्टुम्
  1. एएसडी।
    यदि requirepass पैरामीटर् मुख्यनोड् इत्यत्र सेट् भवति तर्हि गुप्तशब्दसत्यापनम् आवश्यकम् अस्ति यत् सत्यापनम् उत्तीर्णं कर्तुं गुप्तशब्दः मुख्यनोड् इत्यस्य समानः अस्ति इति सुनिश्चितं कर्तुं गुप्तशब्दसत्यापनम् आवश्यकम् अस्ति समाप्तं भवति तथा च दासनोड् प्रतिकृतिप्रक्रियाम् पुनः आरभेत ।

  2. दत्तांशसमूहान् समन्वययन्तु।
    मुख्य-दास-प्रतिकृति-सम्बद्धता सामान्यतया संवादं कृत्वा, यदा प्रथमवारं प्रतिकृतिः स्थापिता भवति, तदा मुख्य-नोड् स्वस्य धारितान् सर्वान् दत्तांशान् दास-नोड्-इत्यत्र प्रेषयिष्यति
    अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

स्वामी-दास समन्वयन रणनीति

यदा मास्टरः दासश्च केवलं संयोजितः भवति तदा पूर्णसमन्वयनं सम्पन्नं भवति तदा वृद्धिशीलसमन्वयनं क्रियते; अवश्यं, यदि आवश्यकं भवति तर्हि दासः कदापि पूर्णसमन्वयनं आरभुं शक्नोति । redis रणनीतिः अस्ति यत्, किमपि न भवतु, प्रथमं वृद्धिशीलसमन्वयनस्य प्रयासः भविष्यति, यदि असफलः भवति तर्हि दासयन्त्रस्य पूर्णसमन्वयनं कर्तुं आवश्यकं भविष्यति

उदाहरणतया

एकं संग्रहणं रक्षन्तु

set name jjy
  • 1

रिकार्डिङ्ग् आदेशः अस्ति

$3 r n
set r n
$4 r n
name r n
$5  r n
jjy r n
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
ऑफसेट्100010011002100310041005100610071008
बाइट् मूल्यम्$3$4एकःपु

7. आदेशः निरन्तरं प्रतिलिपितः भवति।
यदा मुख्यनोड् वर्तमानदत्तांशं दासनोड् प्रति समन्वययति तदा प्रतिकृतिस्थापनप्रक्रिया सम्पन्नं भवति । तदनन्तरं, master-slave data consistency सुनिश्चित्य master node निरन्तरं slave nodes मध्ये write आदेशान् प्रेषयिष्यति ।

सेंटिनल निगरानी

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
Redis master-slave replication इत्यस्य दोषाः

यदा होस्ट् मास्टर् अधः गच्छति तदा अस्माभिः स्विच् इत्यस्य समाधानं मैन्युअल् रूपेण कर्तव्यम् ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

उदघाटनस्य विषयाः : १.
एकदा मुख्यनोड् अधः गच्छति तथा च लेखनसेवा उपयोक्तुं न शक्यते तदा भवद्भिः स्वहस्तेन स्विच् कर्तुं, मुख्यनोड् पुनः चयनं कृत्वा, मुख्य-दास-सम्बन्धं हस्तचलितरूपेण सेट् कर्तुं च आवश्यकम् ।

स्वामी-दास स्विचिंग प्रौद्योगिकी

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

सेंटिनल अवलोकन

सेन्टिनेल् मोड् एकः विशेषः मोड् अस्ति प्रथमं, रेडिस् सेन्टिनेल् इति आदेशाः प्रदाति यथा प्रक्रिया स्वतन्त्रतया चालयिष्यति । सिद्धान्तः अस्ति यत् सेन्टिनेल् आदेशान् प्रेषयित्वा Redis सर्वरस्य प्रतिक्रियायाः प्रतीक्षया बहुविधं चालितानां Redis उदाहरणानां निरीक्षणं करोति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
सेंटिनल भूमिका

  • समूहनिरीक्षणम्: redis master तथा slave प्रक्रिया सम्यक् कार्यं कुर्वन्ति वा इति निरीक्षणस्य उत्तरदायी
  • अधिसूचना: यदि redis उदाहरणं विफलं भवति तर्हि सेन्टिनेलः प्रशासकाय अलार्मसूचनारूपेण सन्देशान् प्रेषयितुं उत्तरदायी भवति ।
  • असफलता: यदि मुख्यनोड् लम्बते तर्हि स्वयमेव दासनोड् मध्ये स्थानान्तरितः भविष्यति ।
  • विन्यास केन्द्र: यदि विफलता भवति तर्हि नूतनस्य मुख्यपतेः क्लायन्ट् सूचयन्तु

सेंटिनल निगरानी वातावरण निर्माण

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

नूतनं sentinel-26379.conf सञ्चिकां रचयन्तु

#端口
port 26379
#守护进程运行
daemonize yes
#日志文件
logfile "26379.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

पैरामीटर् : १.
sentinel monitor mymaster 192.168.92.128 6379 2 विन्यासस्य अर्थः अस्ति यत् sentinel node master node 192.168.92.128:6379 इत्यस्य निरीक्षणं करोति the master node: at least 2 are required केवलं यदा द्वौ सेन्टिनेल् नोड् सहमतौ भवतः तदा एव मास्टर नोड् इत्यस्य विफलता निर्धारयितुं विफलतां च कर्तुं शक्यते ।

नूतनं sentinel-26380.conf सञ्चिकां रचयन्तु

#端口
port 26380
#守护进程运行
daemonize yes
#日志文件
logfile "26380.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

नूतनं sentinel-26381.conf सञ्चिकां रचयन्तु

#端口
port 26381
#守护进程运行
daemonize yes
#日志文件
logfile "26381.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

सेंटिनल नोड् आरभ्यते

redis-sentinel sentinel-26379.conf
  • 1

सेंटिनल नोड् स्थितिं पश्यन्तु

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379> 
127.0.0.1:26379> 
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.66.100:6379,slaves=2,sentinels=3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

सेंटिनलस्य कार्यसिद्धान्तस्य विश्लेषणम्

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
निगरानी चरण
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

सूचना:

  • sentinel (sentinel 1)------&gt;मास्टर (मास्टर) तथा स्लेव (slave) इत्येतयोः कृते info आरभ्य पूर्णसूचनाः प्राप्नुवन्तु।
  • sentinel (sentinel 2)------&gt;मास्टर (master) इत्यस्मै info आरभत, भवन्तः विद्यमानस्य sentinel (sentinel 1) इत्यस्य सूचनां ज्ञास्यन्ति, तथा च slave (slave) इत्यनेन सह सम्बद्धाः भविष्यन्ति।
  • sentinel (sentinel 2)-----&gt;sentinel (sentinel 1) इत्यस्य सदस्यतां आरभत।

अधिसूचना चरण

सेन्टिनेल् सूचनां संग्रहीतुं स्वामिं दासं च निरन्तरं सूचनां प्रेषयति ।

फेलओवर चरण

सूचनाचरणे यदि सेन्टिनेलद्वारा प्रेषिता सूचना गुरुतः प्रतिक्रियां न प्राप्नोति तर्हि तत् स्वामीं SRI_S_DOWN इति चिह्नितं करिष्यति तथा च प्रत्येकं सेंटिनलस्य कृते स्वामिनः स्थितिं प्रेषयिष्यति यदा अन्ये सेंटिनलः स्वामिनः मृतः इति शृण्वन्ति तदा ते वदन्ति अहं न विश्वसिमि अहम् अपि तत् अवलोकयिष्यामि तथा च प्रेषयिष्यामि परिणामाः प्रत्येकेन संरक्षकेण सह साझाः भवन्ति यदा अर्धाः प्रहरणकर्तारः मन्यन्ते यत् स्वामी अधः अस्ति तदा ते स्वामीं SRI_0_DOWN इति चिह्नं करिष्यन्ति।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र प्रश्नः आगच्छति- १.

अस्मिन् समये स्वामिनः प्रतिस्थापनं कर्तव्यं भवति कः स्वामी भविष्यति ।

मतदानं कथं करणीयम्

वीथी:

अहं प्रथमं यस्य सेंटिनलस्य कृते निर्वाचनसूचना प्राप्नोमि तस्य मतदानं करिष्यामि।

केचन प्रकरणाः समाप्ताः कुर्वन्तु : १.

  • न तु ऑनलाइन
  • मन्द प्रतिक्रिया
  • मूलस्वामिना चिरकालं यावत् विच्छिन्नः
  • प्राथमिकता सिद्धान्त

असफलता

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अवलोकनम्
यदा मुख्यनोड् विफलः भवति तदा सेन्टिनेल् इत्यस्य निरीक्षणं स्वचालितविफलतां च प्रदर्शयति ।

असफलतां प्रदर्शयन्तु
master node इत्यस्य वधार्थं kill आदेशस्य उपयोगं कुर्वन्तु

ps aux |grep redis
kill -9 pid
  • 1
  • 2

सेंटिनल नोड् सूचनां पश्यन्तु

यदि भवान् तत्क्षणमेव sentinel node इत्यत्र info Sentinel इति आदेशस्य उपयोगं करोति तर्हि तत् द्रष्टुं शक्नोति ।

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6381,slaves=5,sentinels=3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

सूचना
भवन्तः पश्यन्ति यत् मुख्यनोड् स्विच् ओवर न कृतः, यतः सेन्टिनेल् इत्यनेन मास्टर नोड् इत्यस्य विफलतां ज्ञात्वा स्थानान्तरयितुं किञ्चित् समयः स्यात् ।

नोड 6379 पुनः आरभत

[root@localhost src]# ./redis-cli info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6381
master_link_status:down
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

विन्याससञ्चिकाः पुनः लिखिताः भविष्यन्ति
फेलओवर-चरणस्य समये, सेन्टिनेल्-मास्टर-स्लेव्-नोड्-योः विन्याससञ्चिकाः पुनः लिखिताः भविष्यन्ति ।

include /usr/local/redis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
# Generated by CONFIG REWRITE
daemonize yes
protected-mode no
appendonly yes
slowlog-max-len 1200
slowlog-log-slower-than 1000
save 5 1
user default on nopass ~* &* +@all
dir "/usr/local/redis"
replicaof 127.0.0.1 6381
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

उपसंहारे

  • सेन्टिनेल् प्रणाल्यां मास्टर-स्लेव् नोड्स साधारण-मास्टर-स्लेव् नोड्स इत्यस्मात् भिन्नाः न सन्ति दोषस्य आविष्कारः स्थानान्तरणं च सेन्टिनेल् द्वारा नियन्त्रितं सम्पन्नं च भवति ।
  • सेन्टिनेल् नोड् मूलतः रीडिस् नोड् भवन्ति ।
  • प्रत्येकं सेंटिनलनोड् केवलं अन्येषां सेंटिनलनोड्-स्लेव्-नोड्-इत्यस्य स्वयमेव आविष्कारं कर्तुं निगरानीय-मास्टर-नोड्-विन्यस्तस्य आवश्यकता वर्तते ।
  • सेन्टिनेल् नोड् स्टार्टअप तथा फेलओवर चरणेषु प्रत्येकस्य नोड् इत्यस्य विन्याससञ्चिकाः पुनः लिखिताः भविष्यन्ति (config rewrite) ।

क्लस्टर मोड

रेडिस् इत्यस्य त्रयः क्लस्टर मोड् सन्ति

  • स्वामी-दास-विधा
  • सेंटिनल मोड
  • क्लस्टर मोड

सेन्ट्री मोडस्य दोषाः
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अभावः

  • यदा स्वामी दूरभाषं लम्बयति तदा सेंटिनलः स्वामी निर्वाचयिष्यति निर्वाचनस्य समये रेडिस-प्रवेशस्य कोऽपि उपायः नास्ति, प्रवेशे च अस्थायी व्यत्ययः भविष्यति
  • सेन्ट्री मोड् मध्ये केवलं मास्टर नोड् एव बाह्यरूपेण लिखितुं शक्यते, स्लेव् नोड् केवलं पठनार्थं च उपयोक्तुं शक्यते । यद्यपि एकः Redis नोड् 10W QPS पर्यन्तं समर्थयति तथापि ई-वाणिज्यप्रचारस्य समये आँकडालेखनस्य सर्वः दबावः मास्टरस्य उपरि भवति ।
  • Redis इत्यस्य एकल-नोड्-स्मृतिः अत्यधिकं सेट् कर्तुं न शक्यते यदि दत्तांशः अतिविशालः भवति तर्हि यदा नोड् आरब्धः भवति तदा मास्टर-दास-समन्वयनं बहु मन्दं भविष्यति;

क्लस्टर मोड अवलोकन
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
Redis क्लस्टरः बहुभिः मास्टर-स्लेव्-नोड्-समूहैः निर्मितः वितरितः सेवा-समूहः अस्ति अस्य प्रतिकृतिः, उच्च-उपलब्धता, शार्डिंग्-विशेषताः च सन्ति ।

रेडिस समूहस्य लाभाः

  • रेडिस् समूहे बहुविधाः मास्टर्स् सन्ति, येन क्षणिकप्रवेशसमस्यानां प्रभावः न्यूनीकर्तुं शक्यते ।
  • रेडिस् क्लस्टरस्य बहुविधाः मास्टर्स् सन्ति, ये उच्चतरं समवर्तीतां दातुं शक्नुवन्ति
  • Redis क्लस्टरं शार्ड्स् इत्यत्र संग्रहीतुं शक्यते येन अधिकानि दत्तांशं संग्रहीतुं शक्यते

क्लस्टर मोड निर्माण

Redis क्लस्टर निर्माणार्थं न्यूनातिन्यूनं 3 master nodes आवश्यकाः सन्ति वयम् अत्र 3 masters निर्मामः, प्रत्येकं slave node इत्यनेन सह, कुलम् 6 Redis nodes कृते;
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
समूहनिर्माणम्

क्रमशः 6379, 6380, 6381, 6382, 6383, 6384 इति पोर्ट् सङ्ख्याभिः सह 6 भिन्नाः redis नोड् रचयन्तु ।

सूचना: dump.rdb तथा appendonly.aof सञ्चिकाः प्रतिलिपिकरणात् पूर्वं विलोपनीयानि।

1. नूतनं विन्याससञ्चिकां रचयन्तु
redis6379.config, redis6380.config, redis6381.config, redis6382.config, redis6383.config, redis6384.config सञ्चिकाः रचयन्तु विन्याससञ्चिकायां पोर्टसङ्ख्यां परिवर्तयन्तु येन सा सञ्चिकापोर्टसङ्ख्यायाः अनुरूपं भवति ।

daemonize yes
dir /usr/local/redis-7.2.4/redis-cluster/6382/
bind 192.168.47.100
port 6382
dbfilename dump6382.rdb
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

पैरामीटर्

  • cluster-config-file: क्लस्टर-स्थायित्व-विन्याससञ्चिका, यस्मिन् अन्येषां नोड्-स्थानानां, स्थायित्वचरानाम् इत्यादीनां स्थितिः भवति, उपरि विन्यस्त-निर्देशिकायां स्वयमेव उत्पद्यते प्रत्येकं नोडं कार्यकाले क्लस्टरविन्याससञ्चिकां परिपालयिष्यति (यथा नोड् योजयितुं वा निष्कासयितुं वा), क्लस्टरस्य सर्वे नोड् विन्याससञ्चिकायां नवीनतमसूचनाः अद्यतनं करिष्यन्ति, तदा पुनः पठिष्यति क्लस्टरसूचना प्राप्तुं विन्याससञ्चिकां, तथा च भवान् सहजतया क्लस्टरं पुनः सम्मिलितुं शक्नोति । क्लस्टर् विन्याससञ्चिका Redis द्वारा परिपालिता अस्ति, तस्याः हस्तचलितसंशोधनस्य आवश्यकता नास्ति ।
  • clouster-enabled: क्लस्टरं सक्षमं कुर्वन्तु

पुटं रचयन्तु

mkdir -p /usr/local/redis-7.2.4/redis-cluster/6379/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6380/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6381/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6382/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6383/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6384/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

षट् नोड्स आरभत

[root@bogon src]# ./redis-server ../redis6379.config
[root@bogon src]# ./redis-server ../redis6380.config
[root@bogon src]# ./redis-server ../redis6381.config
[root@bogon src]# ./redis-server ../redis6382.config
[root@bogon src]# ./redis-server ../redis6383.config
[root@bogon src]# ./redis-server ../redis6384.config
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

प्रत्येकं नोड् सफलतया आरभ्यते वा इति पश्यन्तु

[root@bogon src]# ps -ef | grep redis
root    3889    1 0 09:56 ?    00:00:03 ./redis-server 0.0.0.0:6379 [cluster]
root    3895    1 0 09:56 ?    00:00:03 ./redis-server 0.0.0.0:6380 [cluster]
root    3901    1 0 09:57 ?    00:00:03 ./redis-server 0.0.0.0:6381 [cluster]
root    3907    1 0 09:57 ?    00:00:02 ./redis-server *:6382 [cluster]
root    3913    1 0 09:57 ?    00:00:02 ./redis-server 0.0.0.0:6383 [cluster]
root    3919    1 0 09:57 ?    00:00:02 ./redis-server 0.0.0.0:6384 [cluster]
root    4247  2418 0 10:22 pts/0  00:00:00 grep --color=auto redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

क्लस्टरं विन्यस्यताम्

आदेशस्वरूपम्: --cluster-replicas 1 इत्यस्य अर्थः प्रत्येकस्य मास्टरस्य कृते दास-नोड् निर्मातुं

सूचना: अत्र IP इति यन्त्रस्य वास्तविकः IP अस्ति यत्र प्रत्येकं नोड् स्थितम् अस्ति ।

[root@localhost src]# ./redis-cli --cluster create 192.168.47.100:6379 192.168.47.100:6380 192.168.47.100:6381 192.168.47.100:6382 192.168.47.100:6383 192.168.47.100:6384 --cluster-replicas 1
  • 1

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

क्लस्टरस्य सत्यापनम्

कस्यचित् ग्राहकस्य सह सम्बद्धतां कुर्वन्तु

./redis-cli -h 192.168.47.100  -p 6379 -c
  • 1

पैरामीटर् : १.

‐h : मेजबान पता
-p : पोर्ट संख्या
‐c: क्लस्टर मोडं सूचयति

दत्तांशलेखनपरीक्षा

[root@bogon src]# ./redis-cli -p 6379 -c
127.0.0.1:6379> set name zhangsan
-> Redirected to slot [5798] located at 192.168.47.100:6380
OK
192.168.47.100:6380> get name
"zhangsan"
192.168.47.100:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> get name
-> Redirected to slot [5798] located at 192.168.47.100:6380
"zhangsan"
192.168.47.100:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> readonly
OK
127.0.0.1:6383> get name
"zhangsan"
127.0.0.1:6383>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

समूहप्रतिमानसिद्धान्तानां विश्लेषणम्

रेडिस क्लस्टर सर्वे दत्तांशाः १६३८४ स्लॉट् (स्लॉट्) इत्यत्र विभक्ताः सन्ति, प्रत्येकं नोड् स्लॉट् इत्यस्य भागस्य उत्तरदायी भवति । प्रत्येकस्मिन् नोड् मध्ये स्लॉट् सूचना संगृहीता भवति । केवलं मुख्यनोड् कृते स्लॉट् नियुक्ताः भविष्यन्ति, दास नोड् कृते स्लॉट् न नियुक्ताः भविष्यन्ति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

स्लॉट स्थिति निर्धारण एल्गोरिदम: k1 = 127001

पूर्वनिर्धारितरूपेण, Cluster पूर्णाङ्कमूल्यं प्राप्तुं कुञ्जीमूल्यं हैश कर्तुं crc16 एल्गोरिदमस्य उपयोगं करिष्यति, ततः विशिष्टं स्लॉट् प्राप्तुं modulo 16384 कृते एतत् पूर्णाङ्कमूल्यं उपयुज्यते

HASH_SLOT = CRC16 (कुंजी) % 16384

पुनर्प्राप्ति
नोड्स पश्यन्तु

192.168.66.103:8001> cluster nodes
  • 1

Master नोड् मारयतु

lsof -i:8001
kill -9 pid
  • 1
  • 2

नोड् सूचनां अवलोकयन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

जावा रेडिस क्लस्टरं संचालितं करोति

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
विन्याससञ्चिकां परिवर्तयन्तु

spring.data.redis.cluster.nodes=192.168.47.100:6381,192.168.47.100:6383,192.168.47.100:6380
  • 1

सूचना
1. उच्च-उपलब्धतां सुनिश्चित्य Redis-क्लस्टरस्य न्यूनातिन्यूनं 3 नोड्-इत्यस्य आवश्यकता भवति ।
2. भवद्भिः Redis क्लस्टरस्य चालनकाले नोड्स योजयितुं विलोपनं वा परिहरितुं प्रयतितव्यं, यतः एतेन दत्तांशप्रवासः भवितुम् अर्हति तथा च Redis क्लस्टरस्य समग्रप्रदर्शनं प्रभावितं कर्तुं शक्नोति

जावाभाषायां लिखितः कोडः

@SpringBootTest
public class CluseterTest {

  @Autowired
  private RedisTemplate<String,Object> redisTemplate;

  @Test
  void string() {
    //  保存字符串
    redisTemplate.opsForValue().set("itbaizhan","itbaizhan123");

    System.out.println(redisTemplate.opsForValue().get("itbaizhan"));

   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

यदि मम सामग्री भवतः कृते सहायकं भवति तर्हि कृपयालाइक, कमेंट, प्रिय .सृजनं न सुकरं, सर्वेषां समर्थनं एव मां गच्छति
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु