定制 beidu/codis 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 beidu/codis 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6.1k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-03-17