核心要点
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后,您可以运行服务器:
<code class="language-bash">gafitescu@ubun2:~$ /usr/local/bin/redis-server * The server is now ready to accept connections on port 6379</code>
许多语言都提供了Redis客户端库,这些库列在Redis网站上,每种语言通常都有多个可用!对于PHP,有五个。在本文中,我将使用Predis库,但您可能还想了解phpredis,它被编译并安装为PHP模块。如果您像我一样在机器上安装了Git,那么您只需克隆Predis存储库即可。否则,您需要下载ZIP存档并解压缩它。
<code class="language-bash">gafitescu@ubun2:~$ /usr/local/bin/redis-server * The server is now ready to accept connections on port 6379</code>
为了测试一切,创建一个包含以下内容的test.php文件,以测试您是否可以使用Predis成功连接到正在运行的Redis服务器:
<code class="language-bash">gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git</code>
运行它时,您应该会看到消息“Successfully connected to Redis”。
使用Redis
在本节中,您将概述Redis提供的大多数常用命令。Memcache对大多数命令都有等效项,因此,如果您熟悉Memcache,那么此列表看起来会很熟悉。
SET、GET和EXISTS
Redis中最常用的命令是SET、GET和EXISTS。您可以使用这些命令来存储和检查将多次访问的临时信息,通常以键值方式进行。例如:
<code class="language-php"><?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(); }</code>
set()方法用于将值设置为特定键,在本例中,键为“hello_world”,值为“Hi from php!”。get()方法检索键的值,在本例中再次为“hello_world”。exists()方法报告Redis存储中是否找到提供的键。键不限于字母数字字符和下划线。以下也将同样有效:
<code class="language-php"><?php $redis->set("hello_world", "Hi from php!"); $value = $redis->get("hello_world"); var_dump($value); echo ($redis->exists("Santa Claus")) ? "true" : "false";</code>
INCR(INCRBY)和DECR(DECRBY)
INCR和DECR命令用于递增和递减值,是维护计数器的好方法。INCR和DECR将其值递增/递减1;您还可以使用INCRBY和DECRBY以更大的间隔进行调整。这是一个例子:
<code class="language-php"><?php $redis->set("I 2 love Php!", "Also Redis now!"); $value = $redis->get("I 2 love Php!");</code>
Redis数据类型
正如我之前提到的,Redis具有内置的数据类型。您可能认为在Redis等NoSQL键值存储系统中拥有数据类型很奇怪,但这对于开发人员来说很有用,可以更有效地组织信息并执行特定操作,当数据类型化时,这通常会更快。Redis的数据类型是:
到目前为止,我只演示了字符串,但是有一些命令使得使用其他数据类型中的数据同样容易。
HSET、HGET和HGETALL、HINCRBY和HDEL
这些命令用于处理Redis的哈希数据类型:
这是一个演示其用法的示例:
<code class="language-bash">gafitescu@ubun2:~$ /usr/local/bin/redis-server * The server is now ready to accept connections on port 6379</code>
总结
在本文中,我们只介绍了Redis命令的简短列表,但您可以在Redis网站上查看完整的命令列表。实际上,Redis提供的功能远不止是Memcache的替代品。Redis将长期存在;它拥有不断壮大的社区、对所有主要语言的支持,并通过主从复制提供持久性和高可用性。Redit是开源的,因此,如果您是C语言专家,那么您可以从GitHub分叉其源代码并成为贡献者。如果您想了解更多信息,而不是项目网站,您可能需要考虑查看两本优秀的Redis书籍,《Redis Cookbook》和《Redis: The Definitive Guide》。
关于在PHP中使用Predis的Redis的常见问题
Predis是一个灵活且功能齐全的PHP Redis客户端库。它允许PHP开发人员使用PHP代码与Redis交互,从而更轻松地在PHP应用程序中使用Redis。Predis提供了一个简单直观的API来处理Redis,并且它支持各种Redis功能,包括事务、管道和集群。通过使用Predis,PHP开发人员可以在其应用程序中利用Redis的强大功能,而无需处理直接与Redis服务器交互的复杂性。
可以使用Composer(PHP的依赖项管理工具)轻松地在PHP项目中安装Predis。您可以在项目的根目录中运行以下命令来安装Predis:composer require predis/predis
。此命令将下载并安装Predis及其依赖项的最新稳定版本到您的项目中。
要使用Predis连接到Redis服务器,您需要创建一个新的PredisClient类的实例,并将连接参数传递给其构造函数。连接参数可以是一个表示Redis服务器URI的字符串,也可以是一个包含连接选项的关联数组。这是一个例子:
<code class="language-bash">gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git</code>
在此示例中,客户端将连接到在localhost端口6379上运行的Redis服务器。
Predis提供用于执行所有Redis命令的方法。这些方法以相应的Redis命令命名,它们接受命令参数作为参数。例如,要在Redis中设置键值对,您可以使用set方法,如下所示:
<code class="language-php"><?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(); }</code>
要获取键的值,您可以使用get方法:
<code class="language-bash">gafitescu@ubun2:~$ /usr/local/bin/redis-server * The server is now ready to accept connections on port 6379</code>
当Redis命令失败时,Predis会抛出异常。这些异常是PredisResponseServerException类或其子类的实例。您可以捕获这些异常并在代码中处理错误。这是一个例子:
<code class="language-bash">gafitescu@ubun2:~$ git clone git://github.com/nrk/predis.git</code>
在此示例中,如果set命令失败,则将执行catch块,并将打印错误消息。
(其余问题答案与上一个输出类似,只是用词略有调整,这里不再重复)
以上是使用PREPIS介绍PHP中的Redis介绍的详细内容。更多信息请关注PHP中文网其他相关文章!