一、Redis缓存
Redis是一种内存数据结构存储系统,通常被用于做缓存。Thinkphp中提供了对Redis的缓存支持。使用Redis作为缓存,可以大大提高系统的效率。
首先,在config.php中设置'cache' => [ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', ]
,即可配置Redis缓存。默认Redis的host是localhost,port是6379,如果修改了则需要相应修改。
其次,我们可以使用缓存类进行操作,比如添加缓存、删除缓存等,具体代码如下:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('password');//如果有密码加上这个
$key = 'test';
$value = 'Hello Redis!';
$redis->set($key, $value);
$result = $redis->get($key);
echo $result;
$redis->del($key);
上述代码将'Hello Redis!'写入Redis中的key为test的缓存中,并通过get方法获取缓存值,最后通过del方法删除该缓存。
二、Redis队列
Redis可以使用列表来模拟队列。Thinkphp中对Redis队列的支持,可以让我们更加简单地实现队列的操作。 使用队列之前,需要在config.php中设置队列类型为Redis,例如:
'queue' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'timeout' => 0,
'persistent' => false,
'prefix' => 'think',
],
代码示例:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('password');//如果有密码加上这个
$queue = 'test_queue';
$redis->rpush($queue, 'hello');
$redis->rpush($queue, 'world');
$redis->rpush($queue, 'redis');
$result1 = $redis->lpop($queue);
$result2 = $redis->lpop($queue);
$result3 = $redis->lpop($queue);
echo $result1 . " " . $result2 . " " . $result3;
上述代码将字符串'hello'、'world'、'redis'依次添加到名称为test_queue的队列中,并通过lpop方法弹出队首元素,最后输出三个结果。
三、Redis发布/订阅
Redis还支持发布/订阅,通过该方式可以实现多个客户端之间的实时信息传递。 在config.php中设置Redis的发布/订阅:
'queue' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'timeout' => 0,
'persistent' => false,
'prefix' => 'think',
'expire' => null,
],
代码示例:
$redis1 = new Redis();
$redis1->connect('127.0.0.1', 6379);
$redis1->auth('password');//如果有密码加上这个
$redis1->subscribe(array('test'), 'callback');
function callback($instance, $channelName, $message) {
echo $channelName, " received ", $message, "\n";
}
$redis2 = new Redis();
$redis2->connect('127.0.0.1', 6379);
$redis2->auth('password');//如果有密码加上这个
$redis2->publish('test', 'Hello, Redis!');
上述代码定义了一个名为test的频道,并通过subscribe方法订阅该频道。当有消息发布到该频道时,会触发callback方法,并输出对应的信息。接下来通过publish方法在test频道中发布一条消息。 总之,Thinkphp提供了对Redis的支持,方便我们进行缓存、队列、发布/订阅等操作,极大地提高了系统的效率。