基于PhalApi2的Redis拓展
时间:2022-05-02
本文章向大家介绍基于PhalApi2的Redis拓展,主要内容包括基于PhalApi2的Redis拓展、安装配置Redis、安装PhalApi2-Redis、配置文件、入门使用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
基于PhalApi2的Redis拓展
前言
Redis在PHP开发中运用场景已经无处不在,小到简单缓存大到数据库或消息队列都可以使用Redis来进行实现,基于PhalApi2的出世,PhalApi2-Redis也紧接着进行了本次适配来提供更好的开发体验,PhalApi2-Redis提供相对于原生PhalApi2-RedisCache缓存更强大的Redis操作以及完善的封装机制,帮助开发者更好的使用Redis低成本的来解决实际的业务问题.
附上:
项目Git地址:https://github.com/wenzhenxi/phalapi2-redis
项目码云地址 : https://gitee.com/wenzhenxi/phalapi2-redis
安装配置Redis
基于Liunx强烈推荐使用oneinstack在配置php 和 Redis同事会将依赖打包好:
oneinstack:https://oneinstack.com/
手动安装redis网上有很多教程这里不再提及,主要注意一下配置文件:
databases 100 #redis库的最大数量默认16推荐修改100
requirepass phalapi #连接此redis的连接密码默认无密码推荐设置
手动安装php-redis依赖如下:
//下载phpredis解压安装
wget https://github.com/nicolasff/phpredis/archive/master.zip
unzip master.zip -d phpredis
cd phpredis/phpredis-master
phpize
./configure
make && make install
//在php.ini中注册phpredis
extension = redis.so
此后可以在phpinfo()中看到redis即可
安装PhalApi2-Redis
在项目的composer.json文件中,添加:
{
"require": {
"phalapi/redis": "2.0.*"
}
}
配置好后,执行composer update更新操作即可。
配置文件
我们需要在 ./config/app.php 配置文件中追加以下配置:
/**
* 扩展类库 - Redis扩展
*/
'redis' => array(
//Redis链接配置项
'servers' => array(
'host' => '127.0.0.1', //Redis服务器地址
'port' => '6379', //Redis端口号
'prefix' => 'PhalApi_', //Redis-key前缀
'auth' => 'phalapi', //Redis链接密码
),
// Redis分库对应关系操作时直接使用名称无需使用数字来切换Redis库
'DB' => array(
'developers' => 1,
'user' => 2,
'code' => 3,
),
//使用阻塞式读取队列时的等待时间单位/秒
'blocking' => 5,
),
入门使用
初始化PhalApi2-Redis,入口文件index.php加入如下代码
// 惰性加载Redis
PhalApiDI()->redis = function () {
return new PhalApiRedisLite(PhalApiDI()->config->get("app.redis.servers"));
}c
常用基础操作(具体API可以查阅代码中src/Lite.php)
// 存入永久的键值队
PhalApiDI()->redis->set_forever(键名,值,库名);
// 获取永久的键值队
PhalApiDI()->redis->get_forever(键名, 库名);
// 存入一个有时效性的键值队,默认600秒
PhalApiDI()->redis->set_Time(键名,值,有效时间,库名);
// 获取一个有时效性的键值队
PhalApiDI()->redis->get_Time(键名, 库名);
// 写入队列左边
PhalApiDI()->redis->set_Lpush(队列键名,值, 库名);
// 读取队列右边
PhalApiDI()->redis->get_lpop(队列键名, 库名);
// 读取队列右边 如果没有读取到阻塞一定时间(阻塞时间或读取配置文件blocking的值)
PhalApiDI()->redis->get_Brpop(队列键名,值, 库名);
// 删除一个键值队适用于所有
PhalApiDI()->redis->del(键名, 库名);
// 自动增长
PhalApiDI()->redis->get_incr(键名, 库名);
// 切换DB并且获得操作实例
PhalApiDI()->redis->get_redis(键名, 库名);
如果大家有更好的建议可以私聊或加入到PhalApi大家庭中前来一同维护PhalApi 注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 花了一个星期,我终于把RPC框架整明白了!
- PageHelper分页插件
- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
- 分享一套仿英雄联盟大型多人联机实时对战游戏源码(包含完整服务器和客户端源码)
- 【Flutter 专题】101 何为 Flutter Elements ?
- 10.10面试:SpringMVC中目前学习过的注解及功能?+怎么接受前端传递到后台的数据?
- 【Flutter 专题】102 何为 Flutter RenderObjects ?
- 创建出来的maven项目没有iml文件
- SpringMVC传递参数乱码解决,web.xml中配置编码过滤器
- SpringMVC中传值有些值为null使用@RequestParam(“name“)解决
- 9.30面试:AOP+事务+JDK动态代理与cglib区别+Spring的aop如何切换底层创建代理对象的方式
- R语言实现基因组的可视化
- Linux实用命令大全(附思维导图)
- 二叉搜索树与python中self参数理解
- 需要了解的Python编码解码知识