搜索
首页后端开发php教程使用PREPIS介绍PHP中的Redis介绍

An Introduction to Redis in PHP using Predis

核心要点

  • Redis是一个流行的开源数据结构服务器,凭借其内置的数据类型,功能远超简单的键值存储。它被大型公司广泛使用,可作为会话处理程序或用于创建在线聊天或实时预订系统。
  • 在基本操作方面,Redis和Memcache的性能相似,但Redis提供了更多功能,例如内存和磁盘持久性、原子命令和事务以及服务器端数据结构。
  • Predis是一个灵活且功能齐全的PHP Redis客户端库,允许PHP开发人员使用PHP代码与Redis交互。它支持各种Redis功能,包括事务、管道和集群。
  • Redis命令包括SET、GET、EXISTS(用于存储和检查临时信息)、INCR和DECR(用于维护计数器)、HSET、HGET、HINCRBY和HDEL(用于处理哈希数据类型)以及EXPIRE、EXPIREAT、TTL和PERSIST(用于处理数据持久性)。

Redis是一个开源的数据结构服务器,拥有一个内存数据集,由于其内置的数据类型,其功能远不止简单的键值存储。它由Salvatore Sanfilippo于2009年启动,并因其受欢迎程度迅速发展壮大,被VMware(后来聘请Sanfilippo全职参与该项目)、GitHub、Craigslist、Disqus、Digg、暴雪、Instagram等大型公司选中(参见redis.io/topics/whos-using-redis)。您可以将Redis用作会话处理程序,如果您在负载均衡器后面使用多服务器架构,这将特别有用。Redis还具有发布/订阅系统,非常适合创建在线聊天或实时预订系统。有关Redis及其所有命令的文档和更多信息,请访问该项目的网站redis.io。关于Redis或Memcache哪个更好存在很多争论,但正如基准测试所示,它们在基本操作方面的性能几乎相同。Redis比Memcache具有更多功能,例如内存和磁盘持久性、原子命令和事务,以及不是将每个更改都记录到磁盘,而是改为使用服务器端数据结构。在本文中,我们将使用Predis库了解Redis提供的一些基本但功能强大的命令。

轻松安装

Redis易于安装,简要的安装说明发布在产品的下载页面上。根据我的经验,如果您运行的是Ubuntu,那么如果您没有安装TCL,就会出现错误(只需运行sudo apt-get install tcl)。安装Redis后,您可以运行服务器:

gafitescu@ubun2:~$ /usr/local/bin/redis-server
* The server is now ready to accept connections on port 6379

许多语言都提供了Redis客户端库,这些库列在Redis网站上,每种语言通常都有多个可用!对于PHP,有五个。在本文中,我将使用Predis库,但您可能还想了解phpredis,它被编译并安装为PHP模块。如果您像我一样在机器上安装了Git,那么您只需克隆Predis存储库即可。否则,您需要下载ZIP存档并解压缩它。

gafitescu@ubun2:~$ /usr/local/bin/redis-server
* The server is now ready to accept connections on port 6379

为了测试一切,创建一个包含以下内容的test.php文件,以测试您是否可以使用Predis成功连接到正在运行的Redis服务器:

gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git

运行它时,您应该会看到消息“Successfully connected to Redis”。

使用Redis

在本节中,您将概述Redis提供的大多数常用命令。Memcache对大多数命令都有等效项,因此,如果您熟悉Memcache,那么此列表看起来会很熟悉。

SET、GET和EXISTS

Redis中最常用的命令是SET、GET和EXISTS。您可以使用这些命令来存储和检查将多次访问的临时信息,通常以键值方式进行。例如:

<?php
require "predis/autoload.php";
PredisAutoloader::register();

// 由于我们连接到默认设置localhost
// 和6379端口,因此无需额外的
// 配置。如果不是,则可以将
// 方案、主机和端口指定为数组
// 传递给构造函数。
try {
    $redis = new Predis\Client();
/*
    $redis = new Predis\Client(array(
        "scheme" => "tcp",
        "host" => "127.0.0.1",
        "port" => 6379));
*/
    echo "Successfully connected to Redis";
}
catch (Exception $e) {
    echo "Couldn't connected to Redis";
    echo $e->getMessage();
}

set()方法用于将值设置为特定键,在本例中,键为“hello_world”,值为“Hi from php!”。get()方法检索键的值,在本例中再次为“hello_world”。exists()方法报告Redis存储中是否找到提供的键。键不限于字母数字字符和下划线。以下也将同样有效:

<?php
$redis->set("hello_world", "Hi from php!");
$value = $redis->get("hello_world");
var_dump($value);

echo ($redis->exists("Santa Claus")) ? "true" : "false";

INCR(INCRBY)和DECR(DECRBY)

INCR和DECR命令用于递增和递减值,是维护计数器的好方法。INCR和DECR将其值递增/递减1;您还可以使用INCRBY和DECRBY以更大的间隔进行调整。这是一个例子:

<?php
$redis->set("I 2 love Php!", "Also Redis now!");
$value = $redis->get("I 2 love Php!");

Redis数据类型

正如我之前提到的,Redis具有内置的数据类型。您可能认为在Redis等NoSQL键值存储系统中拥有数据类型很奇怪,但这对于开发人员来说很有用,可以更有效地组织信息并执行特定操作,当数据类型化时,这通常会更快。Redis的数据类型是:

  • 字符串——Redis中使用的基本数据类型,您可以从中存储少量字符到整个文件的内容。
  • 列表——一个简单的字符串列表,按其元素的插入顺序排列。您可以从列表的头和尾添加和删除元素,因此您可以使用此数据类型来实现队列。
  • 哈希——字符串键和字符串值的映射。通过这种方式,您可以表示对象(可以将其视为一级深度JSON对象)。
  • 集合——一个无序的字符串集合,您可以在其中添加、删除和测试成员的存在。唯一的约束是您不允许重复成员。
  • 排序集——集合数据类型的特殊情况。不同之处在于每个成员都有一个关联的分数,用于将集合从最小分数排序到最大分数。

到目前为止,我只演示了字符串,但是有一些命令使得使用其他数据类型中的数据同样容易。

HSET、HGET和HGETALL、HINCRBY和HDEL

这些命令用于处理Redis的哈希数据类型:

  • HSET——设置哈希对象上键的值。
  • HGET——获取哈希对象上键的值。
  • HINCRBY——使用指定的值递增哈希对象的键的值。
  • HDEL——从对象中删除键。
  • HGETALL——获取对象的全部键和数据。

这是一个演示其用法的示例:

gafitescu@ubun2:~$ /usr/local/bin/redis-server
* The server is now ready to accept connections on port 6379

总结

在本文中,我们只介绍了Redis命令的简短列表,但您可以在Redis网站上查看完整的命令列表。实际上,Redis提供的功能远不止是Memcache的替代品。Redis将长期存在;它拥有不断壮大的社区、对所有主要语言的支持,并通过主从复制提供持久性和高可用性。Redit是开源的,因此,如果您是C语言专家,那么您可以从GitHub分叉其源代码并成为贡献者。如果您想了解更多信息,而不是项目网站,您可能需要考虑查看两本优秀的Redis书籍,《Redis Cookbook》和《Redis: The Definitive Guide》。

关于在PHP中使用Predis的Redis的常见问题

  • 在PHP中使用Predis与Redis的主要目的是什么?

Predis是一个灵活且功能齐全的PHP Redis客户端库。它允许PHP开发人员使用PHP代码与Redis交互,从而更轻松地在PHP应用程序中使用Redis。Predis提供了一个简单直观的API来处理Redis,并且它支持各种Redis功能,包括事务、管道和集群。通过使用Predis,PHP开发人员可以在其应用程序中利用Redis的强大功能,而无需处理直接与Redis服务器交互的复杂性。

  • 如何在PHP项目中安装Predis?

可以使用Composer(PHP的依赖项管理工具)轻松地在PHP项目中安装Predis。您可以在项目的根目录中运行以下命令来安装Predis:composer require predis/predis。此命令将下载并安装Predis及其依赖项的最新稳定版本到您的项目中。

  • 如何使用Predis连接到Redis服务器?

要使用Predis连接到Redis服务器,您需要创建一个新的PredisClient类的实例,并将连接参数传递给其构造函数。连接参数可以是一个表示Redis服务器URI的字符串,也可以是一个包含连接选项的关联数组。这是一个例子:

gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git

在此示例中,客户端将连接到在localhost端口6379上运行的Redis服务器。

  • 如何使用Predis执行Redis命令?

Predis提供用于执行所有Redis命令的方法。这些方法以相应的Redis命令命名,它们接受命令参数作为参数。例如,要在Redis中设置键值对,您可以使用set方法,如下所示:

<?php
require "predis/autoload.php";
PredisAutoloader::register();

// 由于我们连接到默认设置localhost
// 和6379端口,因此无需额外的
// 配置。如果不是,则可以将
// 方案、主机和端口指定为数组
// 传递给构造函数。
try {
    $redis = new Predis\Client();
/*
    $redis = new Predis\Client(array(
        "scheme" => "tcp",
        "host" => "127.0.0.1",
        "port" => 6379));
*/
    echo "Successfully connected to Redis";
}
catch (Exception $e) {
    echo "Couldn't connected to Redis";
    echo $e->getMessage();
}

要获取键的值,您可以使用get方法:

gafitescu@ubun2:~$ /usr/local/bin/redis-server
* The server is now ready to accept connections on port 6379
  • 如何在Predis中处理错误?

当Redis命令失败时,Predis会抛出异常。这些异常是PredisResponseServerException类或其子类的实例。您可以捕获这些异常并在代码中处理错误。这是一个例子:

gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git

在此示例中,如果set命令失败,则将执行catch块,并将打印错误消息。

(其余问题答案与上一个输出类似,只是用词略有调整,这里不再重复)

以上是使用PREPIS介绍PHP中的Redis介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP如何处理对象克隆(克隆关键字)和__clone魔法方法?PHP如何处理对象克隆(克隆关键字)和__clone魔法方法?Apr 17, 2025 am 12:24 AM

PHP中使用clone关键字创建对象副本,并通过\_\_clone魔法方法定制克隆行为。1.使用clone关键字进行浅拷贝,克隆对象的属性但不克隆对象属性内的对象。2.通过\_\_clone方法可以深拷贝嵌套对象,避免浅拷贝问题。3.注意避免克隆中的循环引用和性能问题,优化克隆操作以提高效率。

PHP与Python:用例和应用程序PHP与Python:用例和应用程序Apr 17, 2025 am 12:23 AM

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)