Jadual Kandungan
一、redis 数据库集群安装
二、安装 php-redis 扩展
三、redis 服务器集群高可用
四、客户端兼容问题
Rumah pembangunan bahagian belakang tutorial php Session共享:php和redis集群如何实现Session共享

Session共享:php和redis集群如何实现Session共享

Aug 14, 2018 pm 05:10 PM

 

本篇文章给大家带来的内容是关于Session共享:php和redis集群如何实现Session共享,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、redis 数据库集群安装

  1. 软件版本redis-3.2.11、php-redis-2.2.4

角色

IP 地址

 主机名

Redis 数据库服务器

192.168.1.41

Redis41

Slave 1 Redis 数据库服务器

192.168.1.42

Redis42

Slave 2 Redis 数据库服务器

192.168.1.43

Redis43

VIP 地址

192.168.1.40

 

三台数据库同样配置

adduser -s /sbin/nologin -d /var/lib/redis redis
yum -y install gcc gcc-c++
tar -xf redis-3.2.11.tar.gz
cd redis-3.2.11/
make MALLOC=libc   //用MALLOC这个 环境变量去编译Redis,而且libc 并不是默认的 分配器,默认的是 jemalloc
make PREFIX=/usr/local/redis install    //指定安装路径
mkdir -p /usr/local/redis/conf
cp redis.conf /usr/local/redis/conf/    
cp sentinel.conf /usr/local/redis/conf/
Salin selepas log masuk

常用配置选项/usr/local/redis/conf/redis.conf

– port 6379     // 端口
– bind 192.168.1.41     //IP 地址
– tcp-backlog 511     //tcp 连接总数
– timeout 0     // 连接超时时间
– tcp-keepalive 300     // 长连接时间
– daemonize yes     // 守护进程方式运行
– databases 16     // 数据库个数
– logfile /var/log/redis_6379.log     //pid 文件
– maxclients 10000     // 并发连接数量
– dir /var/lib/redis/6379    // 数据库目录
Salin selepas log masuk

配置Redis能够让systemclt系统管理(非必须)

  1. vim /usr/lib/systemd/system/redis.server

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
Type=simple
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
Restart=always
RestartSec=42s

[Install]
WantedBy=multi-user.target
Salin selepas log masuk

二、安装 php-redis 扩展

配置 php 支持 Redis

tar zxvf phpredis-2.2.4.tar.gz   

cd phpredis-2.2.4    

/usr/local/php/bin/phpize    //用phpize生成configure配置文件

./configure --enable-redis --with-php-config=/usr/local/php/bin/php-config  

make && make install    

php -m |grep redis
Salin selepas log masuk

编写测试文件 redis.php 进行页面测试

<?php
$redis = new redis();
$redis->connect(&#39;192.168.1.41&#39;,6379);
$redis->set(&#39;redistest&#39;,&#39;666666&#39;);
echo $redis->get(&#39;redistest&#39;);
?>
Salin selepas log masuk

三、redis 服务器集群高可用

redis集群实现大概有以下几种方式

redis-cluster,  官方提供的集群搭建方案(过于重量级,比较适合后期数据量较大的时候的使用)

redis+keepalive  虚拟IP,多台配置非常复杂,不宜维护,需要 slaveof no one 脚本

redis+zookeeper  需要引入zookeeper,对现有代码变动较大

redis+sentinel   redis自带监控中间件,哨兵模式
配置三台 redis 服务器
配置主从关系,在 slave 上添加配置

slaveof 192.168.1.41 6379

查看集群主从关系

redis-cli -h 192.168.1.41 -p 6379 info replication
Salin selepas log masuk

修改 redis 哨兵配置文件 sentinel.conf

bind 192.168.1.41

protected-mode no

daemonize yes

port 26379

dir /tmp

sentinel monitor mymaster 192.168.1.41 6379 2

sentinel down-after-milliseconds mymaster 3000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 5000

sentinel client-reconfig-script mymaster /usr/local/redis/conf/reconfig.sh

分别在主,从上启动 sentinel

redis-sentinel /usr/local/redis/conf/sentinel.conf

查看哨兵状态

redis-cli -h 192.168.1.41 -p 26379 info sentinel
Salin selepas log masuk

四、客户端兼容问题

客户端程序(如PHP程序)连接redis时需要ip和port,但redis-server进行故障转移时,主数据库是变化的,所以ip地址也是变化的,客户端程序如何感知当前主redis的ip地址和端口呢?
redis-sentinel提供了接口,请求任何一个sentinel,发送SENTINEL get-master-addr-by-name 就能得到当前主redis的ip和port。

解决方案:

增加配置切换脚本 sentinel.conf,当主数据库服务宕机时,实现VIP漂移自动切换主从。
sentinel client-reconfig-script mymaster /usr/local/redis/conf/reconfig.sh

#!/bin/bash
#mymaster leader start 192.168.1.41 6379 192.168.1.42 6379
VIP="192.168.1.40/24"
local_ip=$(ip  addr show dev eth0 |awk &#39;$1=="inet"{print $2}&#39;)
if [[ "${local_ip%%/*}" == "$4" ]];then
   /usr/sbin/ifconfig eth0:1 down
elif [[ "${local_ip%%/*}" == "$6" ]];then
   /usr/sbin/ifconfig eth0:1 "${VIP}"
fi
Salin selepas log masuk

 相关推荐:

小程序和ThinkPHP5结合实现登录状态(附代码)

PHP如何实现留言本(图文代码)

thinkphp5中belongsToMany() 模块名称的命名问题解决

php中文网学习专题php session (包含图文、视频、案例)

Atas ialah kandungan terperinci Session共享:php和redis集群如何实现Session共享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Mar 28, 2025 pm 05:11 PM

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

See all articles