图片 10

Redis 对比 Memcached 并在 CentOS 下进行安装配置详解

Redis 是一个开源、支持网络、基于内部存储器、键值对的 Key-Value
数据库,本篇小说主要介绍了Redis 相比 Memcached 并在 CentOS
下展开设置配备详细解释,有意思味的能够通晓一下。

叩问一下 Redis

一、Redis 简介

REmote DIctionary Server(Redis卡塔尔(قطر‎ 是三个由Salvatore
Sanfilippo写的key-value存款和储蓄系统。

Redis是叁个开源的利用ANSI
C语言编写、信守BSD合同、扶持互联网、可依赖内部存款和储蓄器亦可长久化的日志型、Key-Value数据库,并提供四种语言的API。

它平日被可以称作数据布局服务器,因为值(value)能够是 字符串(String卡塔尔,
哈希(Map卡塔尔国, 列表(list卡塔尔国, 集结(sets卡塔尔国 和 有序集结(sorted sets卡塔尔等类型。

Redis 是全然开源无偿的,信守BSD合同,是一个高质量的key-value数据库。

 

询问一下 Redis

Redis 是二个开源、援助互连网、基于内部存款和储蓄器、键值没有错 Key-Value 数据库,使用
ANSI C 编写,并提供二种语言的 API
,它大约一贯不上手难度,只须求几分钟大家就能够产生安装专业,并让它伊始与应用程序顺畅合作。换句话来讲,只需投入一小部分岁月与生机,我们就能够收获卓有成效且意义极佳的个性表现升高,就是说它是贰个相当的轻巧缓存建设方案。它援救存储的
Value
类型不止限于字符串,扶植焦点同步,数据悠久化等等,大家都感到Redis
是最风靡的 Key-Value 存储数据库
,认定有人问 Memcached 呢?

    1.Redis 特点

      Redis 与其余 key – value 缓存成品有以下八脾本性:

  • Redis补助数据的长久化,可以将内部存款和储蓄器中的数码保存在磁盘中,重启的时候能够重复加载进行利用。
  • Redis不仅援救轻松的key-value类型的数目,同不时间还提供list,set,zset,hash等数据布局的积存。
  • Redis援救数据的备份,即master-slave形式的数据备份。

Redis 是一个开源、接济互联网、基于内部存款和储蓄器、键值没有错 Key-Value 数据库,使用
ANSI C 编写,并提供八种语言的 API
,它差不离未有上手难度,只要求几分钟我们就能够成功安装专门的学业,并让它初步与应用程序通畅同盟。换句话来说,只需投入一小部分日子与肥力,大家就能获得一蹴而就且效果极佳的品质表现升高,正是说它是一个特别轻便缓存解决方案。它援助存款和储蓄的
Value 类型不仅只限于字符串,扶助宗旨同步,数据漫长化等等,大家都认为 Redis
是最风靡的 Key-Value 存款和储蓄数据库,肯定有人问 Memcached 呢?

Redis VS Memcached

    2.Redis 优势

  • 天性相当高 – Redis能读的快慢是110000次/s,写的快慢是81000次/s 。
  • 累计的数据类型 – Redis帮衬二进制案例的 Strings, Lists, Hashes, Sets
    及 Ordered Sets 数据类型操作。
  • 原子 –
    Redis的具备操作都是原子性的,同一时候Redis还帮忙对多少个操作全并后的原子性推行。
  • 加上的特征 – Redis还扶助 publish/subscribe, 公告, key 过期等等特色。

Redis VS Memcached

率先小编刚去 DB-Engines.com 的数据库排名中看了须臾间,Redis
名次第九,Key-value store第3个人;Memcached 排名七十一,Key-value
store第几人。那当然不可能声明什么了。

    3.Redis与任何key-value存款和储蓄有何样不一样?

  • Redis有着进一层复杂的数据布局並且提供对她们的原子性操作,那是二个不相同于其余数据库的提升路径。Redis的数据类型都以基于基本数据布局的还要对技术员透明,没有必要进行额外的思梅止渴。

  • Redis运营在内部存款和储蓄器中可是能够长久化到磁盘,所以在对两样数额集进行连忙读写时索要衡量内部存款和储蓄器,因为数据量不可能超越硬件内存。在内部存储器数据库方面包车型地铁另四个亮点是,相比较在磁盘上等同的复杂的数据布局,在内部存款和储蓄器中操作起来非常简单,那样Redis能够做过多里边复杂性很强的政工。同期,在磁盘格式方面他们是紧凑的以扩大的主意发生的,因为他们并没有要求实行自由访谈。

 

第一自身刚去 DB-Engines.com 的数据库排名中看了一下,Redis
排名第九,Key-value store第壹人;Memcached
排行七十二,Key-value store其次位。那本来不可能证实怎么样了。

Redis 帮助越来越多的数据类型,包罗:String、Hash、List、Set;Memcached
仅扶助一种 String 数据类型。

二、Redis 安装

Redis 协助更加多的数据类型,富含:String、Hash、List、Set;Memcached
仅帮助一种 String 数据类型。

Redis
通过Multi/Watch/Exec等一声令下能够支撑职业的定义,原子性的实行一群命令;Memcached
的使用格局中,除了increment/decrement这样的原子操作命令,不设有对业务的协助。

  Window 下安装

  下载地址:

  Redis 扶助 32 位和 61位。那些要求借助你系统平台的莫过于境况选取,这里大家下载 Redis-x64-xxx.zip收缩包到
C 盘,解压后,将文件夹重新命名称为 redis

图片 1

开垦七个 cmd 窗口
使用cd命令切换目录到 C:\redis 运行 redis-server.exe
redis.windows.conf
 。

假虚构方便的话,可以把 redis
的不二等秘书籍加到系统的情形变量里,那样就省得再输路线了,前面包车型地铁特别redis.windows.conf
能够轻松,如果轻易,会启用暗中认可的。输入之后,会来得如下界面:

图片 2

这个时候另启贰个cmd窗口,原来的决不关闭,不然就不也许访问服务端了。

切换来redis目录下运作 redis-cli.exe -h 127.0.0.1 -p 6379 。

设置键值对 set myKey abc

抽出键值对 get myKey

图片 3

Redis 安装成服务

redis-server –service-install redis.windows.conf

开荒运营->输入services.msc 

图片 4

 

 

三、PHP 连接配置redis

 

php5.3   连接使用redis  ,

      1、先下载 phpredis.dll扩张包。下载地址:
 

       

       用phpinfo 查看见时TS vc9。那么下载的版本就对应好  

Redis 通过Multi/Watch/Exec
等一声令下能够扶持职业的定义,原子性的试行一群命令;Memcached
的应用情势中,除了increment/decrement那样的原子操作命令,不真实对业务的支撑。

Redis
能够以master-slave的不二等秘书诀安插服务器完毕宗旨同步备份,相同的时间只持二种悠久化方案;Memcached
不保障仓库储存的多少的得力,也不做多少的长久化工作。当然那一个也都在表明不了什么。

   图片 5

 

     2、解压缩之后获得二个文本,分别将八个公文复制到php 目录的
ext目录下。

    图片 6

 

     3、修改php.ini文件。加入extension 扩展 

         extension=php_redis.dll

      4、 重启apache ,查看phpinfo 分界面。如下则象征安装成功
   
        图片 7

  注:PHP5.4 redis 扩张包是四个文件

      解压缩之后获得三个文本,分别将八个文本复制到php 目录的 ext目录下。

     图片 8

      修改php.ini文件。加入extension 扩展 

         extension=php_igbinary.dll
         extension=php_redis.dll

 

THINKPHP3.2 中配置

图片 9

 

 Redis.class.php 代码
      

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace Think\Cache\Driver;
use Think\Cache;
defined('THINK_PATH') or exit();

/**
 * Redis缓存驱动 
 * 要求安装phpredis扩展:https://github.com/nicolasff/phpredis
 */
class Redis extends Cache {
     /**
     * 架构函数
     * @param array $options 缓存参数
     * @access public
     */
    public function __construct($options=array()) {
        if ( !extension_loaded('redis') ) {
            E(L('_NOT_SUPPORT_').':redis');
        }
        $options = array_merge(array (
            'host'          => C('REDIS_HOST') ? : '127.0.0.1',
            'port'          => C('REDIS_PORT') ? : 6379,
            'timeout'       => C('DATA_CACHE_TIMEOUT') ? : false,
            'persistent'    => false,
        ),$options);

        $this->options =  $options;
        $this->options['expire'] =  isset($options['expire'])?  $options['expire']  :   C('DATA_CACHE_TIME');
        $this->options['prefix'] =  isset($options['prefix'])?  $options['prefix']  :   C('DATA_CACHE_PREFIX');        
        $this->options['length'] =  isset($options['length'])?  $options['length']  :   0;        
        $func = $options['persistent'] ? 'pconnect' : 'connect';
        $this->handler  = new \Redis;
        $options['timeout'] === false ?
            $this->handler->$func($options['host'], $options['port']) :
            $this->handler->$func($options['host'], $options['port'], $options['timeout']);
    }

    /**
     * 读取缓存
     * @access public
     * @param string $name 缓存变量名
     * @return mixed
     */
    public function get($name) {
        N('cache_read',1);
        $value = $this->handler->get($this->options['prefix'].$name);
        $jsonData  = json_decode( $value, true );
        return ($jsonData === NULL) ? $value : $jsonData;    //检测是否为JSON数据 true 返回JSON解析数组, false返回源数据
    }

    /**
     * 写入缓存
     * @access public
     * @param string $name 缓存变量名
     * @param mixed $value  存储数据
     * @param integer $expire  有效时间(秒)
     * @return boolean
     */
    public function set($name, $value, $expire = null) {
        N('cache_write',1);
        if(is_null($expire)) {
            $expire  =  $this->options['expire'];
        }
        $name   =   $this->options['prefix'].$name;
        //对数组/对象数据进行缓存处理,保证数据完整性
        $value  =  (is_object($value) || is_array($value)) ? json_encode($value) : $value;
        if(is_int($expire) && $expire) {
            $result = $this->handler->setex($name, $expire, $value);
        }else{
            $result = $this->handler->set($name, $value);
        }
        if($result && $this->options['length']>0) {
            // 记录缓存队列
            $this->queue($name);
        }
        return $result;
    }

    /**
     * 删除缓存
     * @access public
     * @param string $name 缓存变量名
     * @return boolean
     */
    public function rm($name) {
        return $this->handler->delete($this->options['prefix'].$name);
    }

    /**
     * 清除缓存
     * @access public
     * @return boolean
     */
    public function clear() {
        return $this->handler->flushDB();
    }

}

 

Redis
可以以master-slave的情势陈设服务器达成主题同步备份,同时只持三种漫长化方案;Memcached
不保证仓库储存的数据的得力,也不做多少的悠久化工作。当然那个也都印证不了什么。

每一种事物存在这里个世界总有她的意思。Memcached 的内部内部存款和储蓄器管理机制固然不像
Redis 的那么复杂,但却更具实际功效,因为 Memcached
在拍卖元数据时所消耗的内部存款和储蓄器财富相对更加少;在横向增添方面也比Redis更具优势,由于其在设计上的思路趋势以至相对越发轻巧的效劳设置。比方,缓存一段字符串或
Html页面包车型大巴时候,相对来讲用 Memcached 会更加好有的。

每种事物存在此个世界总有她的含义。Memcached 的里边内部存款和储蓄器管理机制纵然不像
Redis 的那么复杂,但却更具实际功效,因为 Memcached
在拍卖元数据时所消耗的内部存款和储蓄器能源相对越来越少;在横向增加方面也比Redis更具优势,由于其在设计上的思绪趋向以致相对更为简易的遵从设置。比方,缓存一段字符串或
Html页面包车型大巴时候,相对来讲用 Memcached 会更加好一些。

CentOS 下 安装 Redis

CentOS 下 安装 Redis

1.下载解压安装
redis
,这里是官方网站下载的时尚的3.2.5版本,依然通过wget下载(小编喜爱得舍不得放手这种办法)。

1.下载解压安装 redis
,这里是官方网址下载的最新的3.2.5本子,照旧通过wget下载。

wget

tar xzf redis-3.2.5.tar.gz

mv redis-3.2.5/usr/local/redis

wget  xzf redis-3.2.5.tar.gzmv redis-3.2.5 /usr/local/redis

图片 10

上面 mv redis-3.2.5 /usr/local/redis 命令是活动 Redis
安装文件到安装目录,当然这些目录你能够自定义。

上边mv redis-3.2.5 /usr/local/redis命令是移动 Redis
安装文件到安装目录,当然这一个目录你能够自定义。