xml地图|网站地图|网站标签 [设为首页] [加入收藏]

PHP缓存实例

来源:http://www.ccidsi.com 作者:集成介绍 人气:107 发布时间:2020-01-30
摘要:还在攻读redis中,所以本文少禽不停修改 一、Redis 简介 REmote DIctionary Server(Redis卡塔尔国 是叁个由SalvatoreSanfilippo写的key-value存款和储蓄系统。 Redis是一个开源的行使ANSIC语言编写、坚守

还在攻读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是四个key-value存款和储蓄系统。和Memcached相像,它扶持存款和储蓄的value类型相对越来越多,包蕴string(字符串卡塔尔国、list(链表卡塔尔国、set(会集卡塔尔(قطر‎和zset(有序集中State of Qatar。这个数据类型都扶助push/pop、add/remove及取交集并集和差集及更丰盛的操作,而且那些操作都是原子性的。在这根底上,redis扶持各个不一致格局的排序。与memcached相近,为了保障效用,数据都以缓存在内部存款和储蓄器中。不相同的是redis会周期性的把改正的数码写入磁盘只怕把改进操作写入追加的笔录文件,况兼在这里根基上贯彻了master-slave(主从卡塔尔(قطر‎同步。
Redis 是一个高质量的key-value数据库。redis的现身,十分的大程度补偿了memcached那类keyvalue存款和储蓄的供应满足不了需要,在部 分场所能够对关周到据库起到很好的补充功效。它提供了Python,Ruby,Erlang,PHP客商端,使用很方便。

上学redis后生可畏段时间了,发掘在网络都有谈起使用意况,然而超少具体的实例上边是本身要好通过学习总括出的简练实例,倘诺有哪个地方不对迎接提议

    1.Redis 特点

      Redis 与任何 key - value 缓存付加物有以下四个特征:

  • Redis支持数据的长久化,能够将内部存储器中的多寡保存在磁盘中,重启的时候能够再度加载进行应用。
  • Redis不止扶植不难的key-value类型的数额,同不时间还提供list,set,zset,hash等数据构造的仓库储存。
  • Redis支持数据的备份,即master-slave情势的数据备份。

若想在PHP中使用redis,首先要先安装redis。然后在PHP中配备扩大。

  • 先从数据库收取数据转为json数据存在list中
  • 再从list中抽出json转为数量调用

    2.Redis 优势

  • 属性相当高 – Redis能读的进程是110000次/s,写的速度是81000次/s 。
  • 充足的数据类型 – Redis帮衬二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的兼具操作都以原子性的,相同的时间Redis还援救对几个操作全并后的原子性施行。
  • 增进的性状 – Redis还辅助 publish/subscribe, 公告, key 过期等等特色。

1.安装redis。

redis的进程快得要命,小编那数据就200多条,数据库查要1秒多,使用redis就0.0几秒,借使数额越多的话差距就跟分明了,高品质redis 上代码

    3.Redis与其他key-value存款和储蓄有何两样?

  • Redis有着更为复杂的数据布局况兼提供对他们的原子性操作,这是叁个差别于别的数据库的上进路径。Redis的数据类型都以依据基本数据构造的同有时候对技术员透明,无需进行额外的抽象。

  • Redis运维在内部存款和储蓄器中可是能够长久化到磁盘,所以在对两样数额集举办高效读写时须求衡量内部存款和储蓄器,因为数据量无法超越硬件内部存款和储蓄器。在内部存款和储蓄器数据库方面包车型客车另两个优点是,相比较在磁盘上雷同的头昏眼花的数据构造,在内部存款和储蓄器中操作起来很简单,那样Redis能够做过多中间复杂性很强的事情。同一时候,在磁盘格式方面他们是牢牢的以充实的点子发出的,因为他俩并无需进行随机拜谒。

 

首先下载好redis安装文件,解压到D盘或任何盘。

function tt(){ $buydan = D; $redis =new Redis(); $redis->connect('127.0.0.1', 6379); if ($redis->get != 'yes') {//第一次进来,缓存数据,比如说我想缓存蔬菜这个分类的所有数据,就用蔬菜这个分类作为键值 $result = $buydan->field('sp_id,sp_name')->where('sp_fen="蔬菜"')->select(); $result2 = $buydan->field('sp_id,sp_name')->where('sp_fen="肉类"')->select(); //蔬菜1 $json=json_encode; //肉类 $json2=json_encode; $redis->del('shucai', 'routlei', 'putIn');//把键值删除,防止重复 $redis->lPush('shucai', $json); $redis->lPush('roulei', $json2); $redis->set('putIn', 'yes'); echo 'PUTIN SUCCESS'."</br>"; } else {//不是第一次 echo 'NO FIRST'."</br>"; } $this->display(); //对应的模板html就一个input请求 下面的t2 }//请求地址function t2(){ $par = I; $name = $par['name']; $redis =new Redis(); $redis->connect('127.0.0.1', 6379); //获取到数据 $json=$redis->lRange($name, 0, -1); $res=json_decode($json[0],true);//加true是把json转为数组使用 var_dump;}

二、Redis 安装

然后经过Dos命令行实行安装。

Redis得设置和PHP的redis增添能够看自个儿原先的小说 redis增加安装

接待关切微教徒人号:

图片 1PHP传播者.jpg个人博客

  Window 下安装

  下载地址:

  Redis 支持 32 位和 陆十二个人。这些供给基于你系统平台的实际上景况选取,这里大家下载 Redis-x64-xxx.zip调整和收缩包到 C 盘,解压后,将文件夹重新命名称为 redis

图片 2

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

设若想方便的话,能够把 redis 的门路加到系统的情状变量里,那样就省得再输路线了,后边的十二分redis.windows.conf 能够轻便,假设轻便,会启用默许的。输入之后,交易会示如下分界面:

图片 3

那会儿另启叁个cmd窗口,原本的不要关闭,不然就不可能访谈服务端了。

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

安装键值对 set myKey abc

取出键值对 get myKey

图片 4

Redis 安装成服务

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

开辟运转->输入services.msc 

图片 5

 

 

三、PHP 连接配置redis

 

php5.3   连接使用redis  ,

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

       

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

把这一个文件夹复制到此外地点,比方D:redis 目录下。

   图片 6

 

     2、解压缩之后得到一个文书,分别将五个文本复制到php 目录的 ext目录下。

    图片 7

 

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

         extension=php_redis.dll

      4、 重启apache ,查看phpinfo 界面。如下则代表安装成功
   
        图片 8

  注:PHP5.4 redis 扩大包是三个公文

      解压缩之后收获八个文件,分别将五个文件复制到php 目录的 ext目录下。

     图片 9

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

         extension=php_igbinary.dll
         extension=php_redis.dll

 

THINKPHP3.2 中配置

图片 10

 

 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 ThinkCacheDriver;
use ThinkCache;
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();
    }

}

 

开发二个cmd窗口  使用cd命令切换目录到D:redis  运行 redis-server.exe redis.conf  

本文由68399皇家赌场发布于集成介绍,转载请注明出处:PHP缓存实例

关键词: 68399皇家赌场 php Redis 实例 缓存

上一篇:7的安装配置代码,安装步骤

下一篇:没有了

最火资讯