前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php配置redis拓展流程与redis的使用

php配置redis拓展流程与redis的使用

作者头像
山行AI
发布2019-12-02 20:03:58
1.1K0
发布2019-12-02 20:03:58
举报
文章被收录于专栏:山行AI山行AI

问题

程序配置:

启动后访问的报错信息:

解决步骤

一、查看phpinfo

在网站根目录下面创建phpinfo.php并且写入以下代码:

代码语言:javascript
复制
<?php    phpinfo();

输入:http://localhost:9999/phpinfo.php

结果:

版本要看是TS还是nts,是VC11还是VC12还是其他版本号。

  • TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
  • NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。

下载对应的包

  • igbinary地址:https://windows.php.net/downloads/pecl/releases/igbinary/

注意选择与php extension build对应得上的版本:

  • redis地址:https://windows.php.net/downloads/pecl/releases/redis/

选择对应版本:

将包中对应文件放入php安装目录的ext目录中

将上面两图中用红线圈住的部分放入ext目录中。

修改php.ini文件

添加如下内容:

代码语言:javascript
复制
; php_redisextension=php_igbinary.dllextension=php_redis.dll

效果如下:

重启服务,查看phpinfo

可见redis 已经安装成功

php连接redis

代码语言:javascript
复制
<?php$redis = new Redis();  $redis->connect('127.0.0.1', 6379);//serverip port$redis->auth('mypassword');//my redis password$redis ->set( "test" , "Hello World");  echo $redis ->get( "test");

函数封装

代码语言:javascript
复制
/** * 如果不传入$host和$port默认读取Laravel环境变量的参数 * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi */function RedisSet($key,$value,$expire=0,$host='',$port=''){    if(!$key||!$value) return false;    $host = $host?$host:getenv('REDIS_HOST');    $port = $port?$port:getenv('REDIS_PORT');    $redis = new Redis();    $redis->connect($host, $port);    $value = is_array($value)?json_encode($value):$value;    return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);}/** * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi */function RedisGet($key,$host='',$port=''){    $redis = new Redis();    $host = $host?$host:getenv('REDIS_HOST');    $port = $port?$port:getenv('REDIS_PORT');    $redis->connect($host, $port);    $result = $redis->get(getenv('REDIS_PREFIX').$key);    return is_null(json_decode($result))?$result:json_decode($result,true);}

常用操作

代码语言:javascript
复制
setex 带生存时间的写入值$redis->setex('key', 3600, 'value'); setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1$redis->setnx('key', 'value');返回已经删除key$redis->delete('key1'); 成功返回1失败返回0$redis->delete('key1','key2'); 删除两个键成功返回1失败返回0查询生存时间$redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)同时给多个key赋值,同时设置key0和key1$redis->mset(array('key0' => 'value0', 'key1' => 'value1'));key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$redis->incr('key1');$redis->incrBy('key1', 10);减法跟加法一样$redis->decr("key1"); 减少1$redis->decrBy("key1",5) 减少5list相关操作,连表操作lPush$redis->lPush("list", "888");$id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数$redi->lrange('list',0,-1); 返回全部数据,数组形式$redis->lrange('list',0.2); 返回连表0-2坐标的三个元素lPushx/rPushx$redis->lPushx(key, value);在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加$redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key$redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发架构二三事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 解决步骤
    • 一、查看phpinfo
    • 下载对应的包
    • 将包中对应文件放入php安装目录的ext目录中
    • 修改php.ini文件
    • 重启服务,查看phpinfo
    • php连接redis
    • 函数封装
    • 常用操作
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档