连接到服务器
将您的 PHP 应用程序连接到 Redis 数据库
基本连接
使用以下代码连接到标准端口 (6379) 上本地运行的服务器
<?php
require 'vendor/autoload.php';
use Predis\Client as PredisClient;
$r = new PredisClient([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'database' => 0,
]);
存储和检索一个简单字符串以测试连接
echo $r->set('foo', 'bar'), PHP_EOL;
// >>> OK
echo $r->get('foo'), PHP_EOL;
// >>> bar
存储和检索一个 hash 对象
$r->hset('user-session:123', 'name', 'John');
$r->hset('user-session:123', 'surname', 'Smith');
$r->hset('user-session:123', 'company', 'Redis');
$r->hset('user-session:123', 'age', 29);
echo var_export($r->hgetall('user-session:123')), PHP_EOL;
/* >>>
array (
'name' => 'John',
'surname' => 'Smith',
'company' => 'Redis',
'age' => '29',
)
*/
连接到 Redis 集群
要连接到 Redis 集群,请在 clusterNodes
参数中指定一个或多个节点,并在 options
中设置 'cluster'=>'redis'
$clusterNodes = [
'tcp://127.0.0.1:30001', // Node 1
'tcp://127.0.0.1:30002', // Node 2
'tcp://127.0.0.1:30003', // Node 3
];
$options = ['cluster' => 'redis'];
// Create a Predis client for the cluster
$rc = new PredisClient($clusterNodes, $options);
echo $rc->cluster('nodes'), PHP_EOL;
/* >>>
d8773e888e92d015b7c52fc66798fd6815afefec 127.0.0.1:30004@40004 slave cde97d1f7dce13e9253ace5cafd3fb0aa67cda63 0 1730713764217 1 connected
58fe1346de4c425d60db24e9b153926fbde0d174 127.0.0.1:30002@40002 master - 0 1730713763361 2 connected 5461-10922
015ecc8148a05377dda22f19921d16efcdd6d678 127.0.0.1:30006@40006 slave c019b75d8b52e83e7e52724eccc716ac553f71d6 0 1730713764218 3 connected
aca365963a72642e6ae0c9503aabf3be5c260806 127.0.0.1:30005@40005 slave 58fe1346de4c425d60db24e9b153926fbde0d174 0 1730713763363 2 connected
c019b75d8b52e83e7e52724eccc716ac553f71d6 127.0.0.1:30003@40003 myself,master - 0 1730713764000 3 connected 10923-16383
cde97d1f7dce13e9253ace5cafd3fb0aa67cda63 127.0.0.1:30001@40001 master - 0 1730713764113 1 connected 0-5460
*/
echo $rc->set('foo', 'bar'), PHP_EOL;
// >>> OK
echo $rc->get('foo'), PHP_EOL;
// >>> bar
通过 TLS 连接到您的生产环境 Redis
部署应用程序时,请使用 TLS 并遵循Redis 安全指南。
使用以下命令生成客户端证书和私钥
openssl genrsa -out redis_user_private.key 2048
openssl req -new -key redis_user_private.key -out redis_user.csr
openssl x509 -req -days 365 -in redis_user.csr -signkey redis_user_private.key -out redis_user.crt
如果您有Redis 源代码文件夹可用,您也可以使用这些命令生成证书和私钥
./utils/gen-test-certs.sh
./src/redis-server --tls-port 6380 --port 0 --tls-cert-file ./tests/tls/redis.crt --tls-key-file ./tests/tls/redis.key --tls-ca-cert-file ./tests/tls/ca.crt
在连接期间使用 options
的 ssl
部分传递此信息
$options = [
'scheme' => 'tls', // Use 'tls' for SSL connections
'host' => '127.0.0.1', // Redis server hostname
'port' => 6379, // Redis server port
'username' => 'default', // Redis username
'password' => '', // Redis password
'options' => [
'ssl' => [
'verify_peer' => true, // Verify the server's SSL certificate
'cafile' => './redis_ca.pem', // Path to CA certificate
'local_cert' => './redis_user.crt', // Path to client certificate
'local_pk' => './redis_user_private.key', // Path to client private key
],
],
];
$tlsConnection = new PredisClient($options);
echo $tlsConnection->set('foo', 'bar'), PHP_EOL;
// >>> OK
echo $tlsConnection->get('foo'), PHP_EOL;
// >>> bar