作者: moli 发布时间: (2016-02-01 18:03:23) 阅读次数: 3347

Redis是什么?

Image

redis是一个KV型内存数据库,跟普通数据库(mysql)的区别的是:

  • redis是KV型数据库。K=key V=value。就是值对键数据库。
  • redis的数据都放在内存中,而mysql是放在磁盘(硬盘)中。

因为redis非常的简单高效(直接读写内存),所以,redis一般都用来存放零时数据(比特熊的redis每天凌晨自动清空,避免被滥用),比如某个耗时操作的页面缓存等等,从而提高页面的加载速度。

比特熊官方网站本身就依赖redis:邮件队列,耗时页面的缓存等等。

合理使用redis,能很好的提高网站的速度。

目前只有php5.5支持原生redis扩展,其他的php版本请通过下面的第三方库使用:

redis服务器地址:127.0.0.1 / localhost

如何使用Redis?

下面举一个简单的例子,使用开源的php redis库(https://github.com/cheprasov/php-redis-client

代码如下:

<?php
require (dirname(__DIR__).'/redis/autoloader.php');
// or require (dirname(__DIR__).'/src/autoloader.php');

use RedisClient\RedisClient;
use RedisClient\Client\Version\RedisClient2x6;

// Create new Instance for Redis version 2.8.x with config via factory


// RedisClient: 2.8

// Create new instance of client without factory

$Redis = new RedisClient([
    'server' => 'tcp://127.0.0.1:6379', // or 'unix:///tmp/redis.sock'
    'timeout' => 2
]);

// Method 'pipeline' without params returns new Pipeline object;
$Pipeline = $Redis->pipeline();
// or $Pipeline = new Pipeline();
$Pipeline->set('foo', 'bar');
var_dump($Redis->pipeline($Pipeline));

echo 'RedisClient: '. $Redis->getSupportedVersion() . PHP_EOL;
echo 'Redis: '. $Redis->info('Server')['redis_version'] . PHP_EOL;

// By default, the client works with the latest stable version of Redis.
// RedisClient: 3.0
// Redis: 3.0.3

上面的代码会插入一个key value,key是 foo,value是 bar.

修改自该开源库的readme说明,输出如下:

array(1) {
  [0]=>
  bool(true)
}
RedisClient: 3.0
Redis: 3.0.7

然后我在后台命令行读取看看:

Image

说明成功啦。

注意事项

有一些需要注意的点,希望大家了解:

  1. 避免key冲突:因为共享的虚拟主机和内存,key可能会相同,所以key的名称应该尽量独一无二。比如“moli_helloworld”,前面加一个moli,个性化,避免冲突。
  2. 避免value存放隐私数据:不应该将账号,密码等未加密的安全类型的数据存在数据库中,毕竟redis是公共的数据,谁都可以看到你的内容,所以应该避免将此类数据存在redis中,或者加密存储。
  3. 不要将需要持久化的数据放在redis中:例如用户注册的账号信息,应该存入mysql,不应该放在redis中(可以暂存,不可以依赖redis),因为比特熊的redis是公共内存存储,为了避免滥用,我们仅分配了1G的内存给redis,并且每天凌晨清空redis中所有的数据。
  4. key应该设置时效:前面我们设置了一个key=foo 的数据到redis中,但是我们应该同时设置foo这个key的失效时间,比如1小时,6小时后这个数据会被redis自动清空,从而让大家都用得舒服~
评论 11条评论 回复
登陆后才可以评论。 登陆
moli · 回复

@小哥3a  自己搜索php怎么用redis了

小哥3a · 回复

@moli  表示还没有找到在哪里启动和设置

moli · 回复

@小哥3a  可以

小哥3a · 回复

@moli  启动了嘛?现在能用了嘛

moli · 回复

@小哥3a  哎呀,之前忘记启动redis了

小哥3a · 回复

用不来,看了好几遍,都不知道在哪里设置

moli · 回复

@越越  没试过,改明儿试试,换个插件试试看

越越 · 回复

@moli  从记录来看应该是已经缓存了。但是可能因为虚拟主机的缘故无法完全发挥?

moli · 回复

@越越  理论上更快呀,可能是刚开始还没缓存好?

越越 · 回复

@越越  自问自答一下:对比测试了之后发现还是要开着 WP Super Cache 才快。(可能因为缓存类型不一样?)

越越 · 回复

如果在 WordPress 里启用了 Redis 插件来实现缓存的话,那么像 WP Super Cache 这样的缓存插件就不需要了对吧?