返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP操作redis的两种方式
  • 895
分享到

PHP操作redis的两种方式

2024-02-27 19:02:29 895人浏览 独家记忆
摘要

随着Redis使用越来越广泛,各种应用系统几乎都会嵌入redis。当然,PHP也不例外。在我接触到的项目中,主要是使用redis作为缓存服务器。但是对于php来说,它本身并不支持redis。所以说这里我

随着Redis使用越来越广泛,各种应用系统几乎都会嵌入redis。当然,PHP也不例外。在我接触到的项目中,主要是使用redis作为缓存服务器。但是对于php来说,它本身并不支持redis。所以说这里我们需要自己做一些事情,是PHP可以连接redis并操作它。

这里主要有两种方式:一种是通过第三方扩展,另一种是自己使用Socket来封装redis。

通过第三方扩展

目前,对于php操作redis的第三方扩展有很多,我们在这就拿phpredis为例来介绍。

当然,按照常规的PHP模块来说,在安装phpredis扩展之前,如果我们像其他的模块一样来实例化redis操作对象的话,系统会报找不到redis类的错误


<?php
$obj = new redis();
var_dump($obj);
 
?>

错误如下

Fatal_error: class redis not found……

从上面我们也可以看出php默认是不支持redis操作的。

那么我们接下来就需要自己动手了。

在linux系统下扩展

首先我们需要下载,当然在linux上下载第三方应用还是比较容易的。phpredis的源代码托管在GitHub上,下载地址:https://github.com/phpredis/phpredis.git

# git clone Https://github.com/phpredis/phpredis.git

然后进入该目录

#cd phpredis

对PHP扩展第三方应用,需要借助phpize这个工具,具体步骤如下

# /usr/local/php/bin/phpize  //生成编译需要的文件
# ./configure

这个过程可能会出现如下错误

configure: error: Cannot find php-config. Please use --with-php-config=PATH

出现这个错误的时候,我们需要按照它的提示 使用 –with-php-config=PATH重新操作

#./configure –with-php-config=/usr/local/php/bin/php-config
//成功
# make && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/   //编译安装成功后的结果

最后的结果告诉我们,phpredis已经编译成功。在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/这个目录下已经生成了redis.so库。

然后我们编辑php.ini配置文件,将redis.so类库加入到php.ini扩展中

extensions_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
extension=redis.so

然后我们重启服务,这时phpredis已经扩展成功了。我们可以使用phpinfo()函数检测当前PHP的环境信息。

发现当前php已经支持redis操作了。

其实在linux系统下面对PHP进行第三方的扩展很简单。下面我们来看一下如何在windows下进行扩展。

在windows系统下扩展

由于工具所限,不能实际在windows系统下进行扩展。下面是翻译自https://github.com/phpredis/phpredis/issues/213#issuecomment-11361242 的方法。

1. 安装visual studio 2008

2. 下载PHP源码

3. 解压到C:\php\php5

4. 下载http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip 并且解压到C:\php

5. 打开 cmd 依次执行下面的命令

>cd C:\php\php-5.4.9\ext
>git clone https://github.com/nicolasff/phpredis.git
>cd ..
>buildconf.js
>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv" /x86 /xp /release
>path "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin";%PATH%
>bin\phpsdk_setvars.bat
>"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
>configure.js --disable-all --enable-cli --enable-redis --enable-redis-session (if building the nts version, also add --disable-zts)
>nmake php_redis.dll
>fix any compilation errors

最后将生成的php_redis.dll 拷贝到 php安装目录\ext 目录下面。然后编辑php.ini,添加如下内容

extension=php_redis.dll

最后重启服务即可完成phpredis在windows下的扩展。

使用原生php封装phpredis

上面我们介绍了使用第三方的扩展使php支持redis操作。除此之外我们还可以自己通过redis的协议使用php来封装phpredis。

这里我先封装一个类,简单的实现get 命令。代码如下


<?php
class Redis{
   
    private $handle;
   
    private $host;
    private $port;
    private $slient_fail;
    private $timeout;
   
    private $connect_timeout = 3;
   
    public function __construct($host,$port,$slient_fail = false,$timeout = 60){
        if($host && $port){
            $this->connect($host,$port,$slient_fail,$timeout);
        }
    }
   
    private function connect($host = '127.0.0.1',$port = 6379,$slient_fail = false,$timeout = 60){
        $this->host = $host;
        $this->port = $port;
        $this->slient_fail = $slient_fail;
        $this->timeout = $timeout;
        $this->handle = fsockopen($host,$port,$errno,$errstr,$this->connect_timeout);
    }
   
    public function get(){
        $nl = "\r\n";
        $cmd = '*2'.$nl.'$3'.$nl.'get'.$nl.'$5'.$nl.'mykey'.$nl;
        fwrite($this->handle, $cmd);
        $res = fgetc($this->handle);
        $res = trim(fgets($this->handle));
        $response = fread($this->handle,$res);
        fgets($this->handle);
        echo $response;
    }
}
 
$obj = new Redis('192.168.144.133',6379);
$obj->get();

在上面代码中,有一个需要注意的地方。就是在成员函数get()中的变量$cmd的内容需要和大家简单介绍一下。

$cmd = '*2'.$nl.'$3'.$nl.'get'.$nl.'$5'.$nl.'mykey'.$nl;

其中*后面的数字表示该命令的参数个数。因为有两个参数 get 和 mykey,所以*后面是2。$后面的数字表示的是参数的长度。get长度是3,mykey长度是5。所以前面分别是 $3和$5。

关于redis协议的详细介绍大家可以参考http://redis.io/topics/protocol。

希望本文对大家有所帮助。

--结束END--

本文标题: PHP操作redis的两种方式

本文链接: https://www.lsjlt.com/news/568930.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP操作redis的两种方式
    随着redis使用越来越广泛,各种应用系统几乎都会嵌入redis。当然,PHP也不例外。在我接触到的项目中,主要是使用redis作为缓存服务器。但是对于PHP来说,它本身并不支持redis。所以说这里我...
    99+
    2024-02-27
  • Spark SQL 2.4.8 操作 Dataframe的两种方式
    目录一、测试数据二、创建DataFrame方式一:DSL方式操作方式二:SQL方式操作一、测试数据 7369,SMITH,CLERK,7902,1980/12/17,800,20 ...
    99+
    2024-04-02
  • redis实现缓存的两种方式
    本篇文章给大家分享的是有关redis实现缓存的两种方式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。redis实现缓存大致为两种措施:一、脚本...
    99+
    2024-04-02
  • 详解Spring集成Redis的两种方式
    目录一、使用Jedis方式集成1、增加依赖2、配置项3、配置连接池4、测试使用spring-data-redis1、引入依赖2、配置项3、使用4、可能会遇到的坑哨兵和集群总结:在工作...
    99+
    2024-04-02
  • Python操作Hive的两种方法总结
    方法一:使用PyHive库 安装依赖包:其中sasl安装可能会报错,可以去https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下载对应版本安装。 pip install sasl pip in...
    99+
    2023-01-31
    两种 操作 方法
  • Redis的两种安装部署方式介绍
    本篇内容介绍了“Redis的两种安装部署方式介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Linu...
    99+
    2024-04-02
  • redis的两种持久化方式是什么
    Redis有两种持久化方式,分别是RDB持久化和AOF持久化。 RDB持久化:RDB持久化是将Redis在内存中的数据以快照的形...
    99+
    2024-04-22
    redis
  • php接口加密的两种方式
    在我们做项目的时候免不了使用接口请求数据,或者通过接口给其他应用提供数据,但是在网络请求中我们的数据是可以别一些软件抓取到的,这样我们的数据就会别泄露或者被人篡改,在我们实际项目中应该怎么处理呢? 下...
    99+
    2023-09-24
    php 开发语言
  • Spring Boot两种全局配置和两种注解的操作方法
    目录零、学习目标 一、全局配置文件概述二、Application.properties配置文件1、配置tomcat端口号和web虚拟路径2、对象类型的配置与使用3、两种属性...
    99+
    2024-04-02
  • redis两种持久化方式RDB和AOF
    目录 前言 1. Redis 数据库结构 2. RDB 持久化 2.1. RDB 的创建和载入 2.1.1. 手动触发保存 SAVE 命令 BGSAVE 命令 SAVE 和 BGSAVE 的比较 2.1.2. 自动触发保...
    99+
    2021-05-11
    redis两种持久化方式RDB和AOF
  • PHP实现两种排课方式
    两种排课方式: 固定每周的固定时间上课(例:共上20节,每周六、周日早上8点-10点上课。假如今天周六凌晨1点,那么排课也需要从今天开始)总共上几个周,每周上课时间比较个性化(例:共...
    99+
    2024-04-02
  • python2.7连接操作redis的几种方法
    python版本:2.7首先需要先安装redis模块:wget https://pypi.python.org/packages/source/r/redis/redis-2.10.3.tar.gztar zxvf redis-2.10.3...
    99+
    2023-06-02
  • redis数据的两种持久化方式对比
    一.概念介绍 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Apend Only File)。 RDB方式 RDB方式是一种快照式的持久化方法,将某一时刻的数据持久...
    99+
    2022-06-04
    两种 持久 方式
  • Redis中的两种持久化方式是什么
    本篇内容主要讲解“Redis中的两种持久化方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中的两种持久化方式是什么”吧!Redis的两种持久化...
    99+
    2024-04-02
  • PHP操作Redis
    目录基本指令获取所有的key(keys)判断键对应值的类型(type)删除缓存项(del)设置有效期(expire,expireAt)获取有效期(ttl)检测缓存项是否存在(exists)查看当前数据库key的数量(dbSize)...
    99+
    2017-06-12
    PHP操作Redis
  • 国产化中的 .NET Core 操作达梦数据库DM8的两种方式(操作详解)
    目录背景环境SDK操作数据库DbHelperSQL方式Dapper方式背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x6...
    99+
    2024-04-02
  • php操作redis方法示例
    这篇文章给大家分享的是有关php操作redis方法示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并...
    99+
    2024-04-02
  • 详细讲解 Redis 的两种安装部署方式
    Redis 是一款比较常用的 NoSQL 数据库,我们通常使用 Redis 来做缓存,这是一篇关于 Redis 安装的文章,所以不会涉及到 Redis 的高级特性和使用场景,Redis 能够兼容绝大部分的 POSIX 系统,例如 Linux...
    99+
    2022-02-17
    详细讲解 Redis 的两种安装部署方式
  • koa2实现session的两种方式(基于Redis 和MySQL)
    一.基于MySQL的实现方式 这种方式需要安装koa-session-minimal和koa-mysql-session两个依赖。 执行 npm install koa-session-minimal koa-mysql-session ...
    99+
    2014-08-19
    koa2实现session的两种方式(基于Redis 和MySQL) 数据库入门 数据库基础教程 数据库 mysql
  • redis的两种持久化方式有什么缺点?
    这篇文章主要为大家详细介绍了redis的两种持久化方式的缺点,图文详解容易学习,配合代码阅读理解效果更佳,感兴趣的小伙伴们可以参考一下。一、RDB持久化模式缺陷1、问题描述:并发200路,模拟不断写Redi...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作