beidu/codis
Composer 安装命令:
composer require beidu/codis
包简介
贝嘟分布式缓存扩展
README 文档
README
呗嘟分布式redis扩展
####composer 依赖安装
composer require beidu/codis
配置文件
codisConnect.zkHost = '127.0.0.1:2181'
codisConnect.zkPassword = 'username:password'
codisConnect.zkName = 'codis项目名称'
codisConnect.zkTimeout = 5
codisConnect.retryTime = 3
codisConnect.password = 'redis密码'
codisConnect.select = 0
codisConnect.timeout = 3
codisConnect.expire = 3600
codisConnect.prefix = ''
codisConnect.failOverEnable = 1 //故障转移 1开启 0禁用
codisConnect.connType = 'CODIS' //根据连接枚举类来获取不同数据源 名称 不设置默认是CODIS
codisConnect.connEnumClass = '\Ybren\Codis\SockEnum' //设置连接枚举类 如果设置了就可以设置不同的connType 值 不设置默认是\Ybren\Codis\Enum\ConnEnum
可以N个连接配置 根据你继承ConnEnum 枚举类
默认3种数据配置源
alicloudConnect.host = '127.0.0.1:6379'
alicloudConnect.password = 'redis密码'
alicloudConnect.select = 0
alicloudConnect.timeout = 3
alicloudConnect.expire = 3600
alicloudConnect.prefix = ''
alicloudConnect.failOverFlag = 0 //故障转移标志 0禁用 1开启
localConnect.host = '127.0.0.1:6379'
localConnect.password = 'redis密码'
localConnect.select = 0
localConnect.timeout = 3
localConnect.expire = 3600
localConnect.prefix = ''
localConnect.failOverFlag = 1 //故障转移标志 0禁用 1开启
比如我想增加 SockEnum枚举类
class SockEnum extends ConnEnum{
protected const SOURCE_ONE = "ONE"
}
那么你要在yaconf 配置中如下配置
oneConnect.host = '127.0.0.1:6379'
oneConnect.password = 'redis密码'
oneConnect.select = 0
oneConnect.timeout = 3
oneConnect.expire = 3600
oneConnect.prefix = ''
静态调用操作命令
string 操作命令
Codis::set($key, $value, $ttl)
Codis::get($key)
Codis::getUnChange($key)
Codis::setUnChange($key, $value, $expire)
Codis::dec($key, $step = 1)
Codis::inc($key, $step = 1)
Codis::rm($key)
Codis::setNx($key, $expire= 300, $value= 1)
Codis::has($name)
获取redis连接句柄可以操作没有的方法
Codis::handler()
list 操作命令
Codis::lPop($key)
Codis::rPush($key, $val)
hash 操作命令
Codis::hGet($key, $k1)
Codis::hSet($key, $k1, $v1)
Codis::hGetAll($key)
Codis::hDel($key, $k1)
设置前缀
Codis::setPrefix("ddd_");
分布式锁 zookeeper锁和 redis锁
$rdLock = new rdLock();
$lock = $rdLock->acquireLock("haha",1);
if ($lock) {
echo "redis locked ~~~~`\r\n";
}
$rdLock->releaseLock("haha",1);
echo "redis release lock\r\n";
$zkLock = new zkLock();
$res = $zkLock->acquireLock("cd324",444);
if ($res){
echo "zk locked ~~~~`\r\n";
}
echo "zk start release lock\r\n";
$zkLock->releaseLock();
echo "zk end release lock\r\n";
切换连接类型
三种类型 Codis分布式缓存 ConnEnum::YBRCLOUD() 阿里云redis ConnEnum::ALICLOUD() 本地redis ConnEnum::LOCAL()
//切换到本地
Codis::switchConnType(ConnEnum::LOCAL());
//获取redis句柄 可以操作redis扩展的命令 除了部分命令不能使用之外其余都可以
$redis = Codis::handler();
//切换封装的命令操作类CMD类 Coids::getInstance()
可以使用 Cmd.php 所有方法 通过静态访问
Coids::set($key,$value,$ttl)
//增加前缀枚举类 如需自定义 可以继承此枚举类
//枚举订单前缀
BizEnum::ORDER()
...
class Custom extends BizEnum{
const XX = "HAHAH_"; 自定义前缀
}
Codis禁用命令如下
| Command Type | Command Name |
|---|---|
| Keys | KEYS |
| MIGRATE | |
| MOVE | |
| OBJECT | |
| RANDOMKEY | |
| RENAME | |
| RENAMENX | |
| SCAN | |
| Strings | BITOP |
| MSETNX | |
| Lists | BLPOP |
| BRPOP | |
| BRPOPLPUSH | |
| Pub/Sub | PSUBSCRIBE |
| PUBLISH | |
| PUNSUBSCRIBE | |
| SUBSCRIBE | |
| UNSUBSCRIBE | |
| Transactions | DISCARD |
| EXEC | |
| MULTI | |
| UNWATCH | |
| WATCH | |
| Scripting | SCRIPT |
| Server | BGREWRITEAOF |
| BGSAVE | |
| CLIENT | |
| CONFIG | |
| DBSIZE | |
| DEBUG | |
| FLUSHALL | |
| FLUSHDB | |
| LASTSAVE | |
| LATENCY | |
| MONITOR | |
| PSYNC | |
| REPLCONF | |
| RESTORE | |
| SAVE | |
| SHUTDOWN | |
| SLAVEOF | |
| SLOWLOG | |
| SYNC | |
| TIME | |
| Codis Slot | SLOTSCHECK |
| SLOTSDEL | |
| SLOTSINFO | |
| SLOTSMGRTONE | |
| SLOTSMGRTSLOT | |
| SLOTSMGRTTAGONE | |
| SLOTSMGRTTAGSLOT |
半支持命令
| Command Type | Command Name |
|---|---|
| Lists | RPOPLPUSH |
| Sets | SDIFF |
| SINTER | |
| SINTERSTORE | |
| SMOVE | |
| SUNION | |
| SUNIONSTORE | |
| Sorted Sets | ZINTERSTORE |
| ZUNIONSTORE | |
| HyperLogLog | PFMERGE |
| Scripting | EVAL |
| EVALSHA |
beidu/codis 适用场景与选型建议
beidu/codis 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.1k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 03 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「redis」 「beidu」 「codis」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 beidu/codis 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 beidu/codis 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 beidu/codis 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Microservice RPC through message queues.
The CodeIgniter Redis package
贝嘟邮件扩展
Redis distributed locks for laravel
Redis backed library for creating background jobs and processing them later.
Symfony Queue Bundle
统计信息
- 总下载量: 6.1k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-03-17