使用Twemproxy实现Redis连接池
Redis 实现 连接池 使用
2023-09-27 14:25:42 时间
原理:php和twemproxy代理在同一服务器下,通过unix socket通信,proxy保持对远端redis的长连接,这样可以减少php直连redis的网络开销
安装需要的工具
yum install autoconf
yum install automake
yum install libtool
下载安装Twemproxy
wget https://codeload.github.com/twitter/twemproxy/zip/master
unzip twemproxy-master.zip
cd twemproxy-master/
./configure --prefix=/usr/local/twemproxy
make && make install
设置环境变量
echo 'PATH=$PATH:/usr/local/twemproxy/sbin' >> /etc/profile
source /etc/profile
创建conf目录
cd /usr/local/twemproxy
mkdir conf
按照类似如下配置和CPU数量相同的配置数(我的CPU为双核),监听不同的socket:
redis1.yml
instance:
listen: /usr/local/twemproxy/nutcracker1.sock
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 127.0.0.1:6379:1
redis2.yml
instance:
listen: /usr/local/twemproxy/nutcracker2.sock
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 127.0.0.1:6379:1
运行两个实例
nutcracker -c /usr/local/twemproxy/conf/redis1.yml -m 512 -s 11111 -d
nutcracker -c /usr/local/twemproxy/conf/redis2.yml -m 512 -s 22222 -d
[root@www html]# ps -ef | grep nut
root 19266 8958 0 08:26 pts/4 00:00:00 grep --color=auto nut
root 28250 1 0 07:29 ? 00:00:00 nutcracker -c /usr/local/twemproxy/conf/redis1.yml -m 512 -s 11111 -d
root 30225 1 0 07:30 ? 00:00:00 nutcracker -c /usr/local/twemproxy/conf/redis2.yml -m 512 -s 22222 -d
PHP程序
<?php
$redis = new Redis();
//$con = $redis->connect('/usr/local/twemproxy/nutcracker' .rand(1,2) . '.sock');
$con = $redis->connect('127.0.0.1', '6379');
$redis->set('test_twemproxy', 'test_twemproxy');
echo $redis->get('why');
$redis->close();
配置参考:https://www.iteye.com/blog/cpjsjxy-2090333
(PS:如果将同一实例的配置servers配置多台redis服务,可根据相应分配算法实现集群)
相关文章
- redis 在 php 中的应用(Sorted-set篇)
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
- Laravel 中应用 Redis Setex 命令实现锁的方法
- PHP+Redis 利用列表 list 实现简单队列
- laravel+redis 生成订单号-当天从1开始自增
- php与Redis实现一个100万用户的投票项目,如何实现实时查看投票情况?
- Spring Boot 操作 Redis 的各种实现
- Scrapy_redis框架分布式爬虫的实现案例-书山有路网
- 分布式系列教程(19) -基于Redis实现分布式锁
- 84 爬虫 - scrapy-redis源码分析(dupefilter)
- springboot @Cacheable注解实现Redis缓存
- 通过Lua来实现Redis的分布式锁
- 使用Redis SETNX 命令实现分布式锁
- springboot集成springsession利用redis来实现session共享
- 五、ASP.NET Core SignalR 横向扩展设置 Redis 底板
- 领导:谁再用redis过期监听实现关闭订单,立马滚蛋!
- Golang 实现 Redis(11): RDB 文件格式
- 用REDIS实现分布式缓存
- 【redis使用全解析】常见运维操作
- 浅析Redis发布订阅机制及其Java实现
- 大数据框架命令集合(Linux、Shell、Hadoop、Zookeeper、Kafka、Hive、Redis、Flink)
- Redis缓存服务搭建及实现数据读写
- Redis缓存 ava-Jedis操作Redis,基本操作以及 实现对象保存
- 《Redis设计与实现》学习笔记-发布与订阅、事务、慢查询日志
- 基于Redis实现分布式锁
- 【Redis】Redis 的过期策略以及内存淘汰机制详解