redis集群 - Redis 分布式缓存,是如何实现多台服务器SESSION 实时共享的
高洛峰
高洛峰 2017-04-24 09:12:54
0
6
1018

现在提到多服务器的共享session,几乎都是回答用redis。
对于redis实现几台服务器共享session,不是很理解。
假如一个网站分别部署在A B C 3 台服务器上,他们的代码都是相同的。用户在访问的过程中是随机切换到其他服务器,使用redis来共享session,那么是这3台服务器是如何实现session 实时共享的?

个人猜想的方案

方案一:
A B C 三台服务器上每台服务器都部署session,PHP 直接连本台服务器的 127.0.0.1 的REDIS进行操作SESSION,通过本地REDIS进程他们相互的配置好了相互的共享机制?所以就实现了三台服务器SESSION实时共享

方案二:
将REDIS 另外的部署到第四台服务器D, A B C 三台服务器上的PHP配置连接的REDIS是这台D服务器。那么就实现了统一的SESSION 实时共享,这样貌似不正确。

很疑惑Redis SESSION 实时共享到底是如何实现的?
这三台服务器的PHP 都是连接到本地的127.0.0.1 6379 的REDIS 还是?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(6)
黄舟

Pertama sekali, kita perlu menjelaskan perbezaan antara sesi dan kuki. Bahagian pelayar menyimpan kuki Setiap kali penyemak imbas menghantar permintaan kepada pelayan, pengepala HTTP akan menambah maklumat kuki anda secara automatik. Pelayan menggunakan kuki pengguna sebagai kunci untuk mencari nilai (sesi) yang sepadan dalam storan

Tapak web di bawah nama domain yang sama semuanya mempunyai kuki yang sama. Oleh itu, tidak kira berapa banyak pelayan yang ada, kuki pengguna yang sama pada pelayan mana permintaan tanpa laluan diedarkan adalah

tidak berubah. Dalam erti kata lain, sesi yang sepadan dengan kuki juga unik.

Hanya pastikan berbilang pelayan perniagaan mengakses pelayan redis (atau kluster) yang sama. Ini akan mencapai matlamat anda. Jadi rancangan 2 anda betul

Peter_Zhu

Memandangkan ia dikongsi, sudah tentu ia mesti disimpan dalam Redis yang sama, yang merupakan pilihan kedua anda.

Gunakan Redis untuk berkongsi Sesi Perkara utama ialah Sesi digunakan pada Redis dan disimpan dalam Sesi fail tidak lagi digunakan secara setempat.

黄舟

Memandangkan anda menggunakan redis untuk berkongsi sesi, ini pada asasnya bermakna terdapat hanya satu contoh redis untuk anda, tetapi sama ada tika ini hanya memulakan perkhidmatan redis atau menggunakan gugusan redis pada berbilang pelayan bergantung pada lapisan aplikasi anda.

Untuk aplikasi yang mempunyai keperluan kebolehpercayaan yang tinggi, redis mesti digunakan ke dalam kelompok, serupa dengan penyelesaian 1 yang anda nyatakan, tetapi redis ini tidak akan diasingkan di dalamnya untuk mencapai serpihan dan lebihan. , tidak perlu mengehadkan lokasi redis apabila mengaksesnya Sebagai contoh, anda boleh mengakses redis pada B pada pelayan A, dan storan data sebenar redis pada B mungkin terletak pada pelayan C. Semua ini sangat penting untuk. aplikasi (pelanggan) Semuanya kotak hitam, tidak perlu peduli.

Peter_Zhu

Terdapat konfigurasi sesi dalam php.ini. Tukar konfigurasi kepada redis atau memcache, dan jangan risau tentang perkara lain

小葫芦

Secara peribadi, saya merasakan sesi perkongsian hanyalah satu konsep perkongsian data Data yang asalnya perlu disimpan dalam sesi dipindahkan ke redis untuk penyimpanan Sudah tentu, ia juga perlu untuk menjana sessionID yang unik sesi, dan kemudian hantarkannya kepada pelanggan dan simpan ke Kuki, pelanggan perlu menghantar kuki yang diubah suai bersama-sama setiap kali ia membuat permintaan, dan kemudian mendapatkan data yang sepadan daripada redis.
Malah, apabila bercakap tentang sesi perkongsian, ia sebenarnya hanyalah cache kongsi.

Memang saya bercakap tentang konsep Mungkin ada alat yang boleh menyimpan secara langsung sesi sebenar pada pelayan untuk redis, tetapi saya fikir konsepnya seperti ini.

PHPzhong

Malah, kedua-dua penyelesaian di atas boleh dilaksanakan Pertama sekali, yang pertama boleh membina kelompok redis untuk meningkatkan kestabilan dan prestasi perkhidmatan dan mengelakkan satu titik kegagalan, yang boleh menyebabkan kehilangan sesi. data cache. Pilihan kedua ialah membuka perkhidmatan redis pada mesin tambahan Untuk meningkatkan kestabilan perkhidmatan, anda boleh membina perkhidmatan tuan-hamba. Kuki dan sesi adalah serupa dengan nilai kunci anda pada redis

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan