php框架CodeIgniter使用redis的方法分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-08 10:16:10 浏览: 评论:0
这篇文章主要介绍了php框架CodeIgniter使用redis的方法,结合实例形式分析了redis的安装、设置及CodeIgniter使用redis的相关操作技巧与注意事项,需要的朋友可以参考下。
本文实例讲述了php框架CodeIgniter使用redis的方法。分享给大家供大家参考,具体如下:
1、安装redis
首先计算机上必须已经装了redis服务(redis数据库)并运行。
2、安装phpredis
① 下载
项目地址:https://github.com/phpredis/phpredis(可以不管这个),这里面提到,windows版本的phpredis要自己编译,当然我们不能这么蛮干。
说下我走过的弯路,一开始从http://windows.php.net/downloads/pecl/snaps/redis/20160319/(这个也可以不管)下载了,一直都弄不好,其实这个vc14是7.0版本的php,我们需要的是7.1版本的,所以一直就是错,找不到问题所在,直到找到这个:
http://pecl.php.net/package-stats.php
对应的版本点进去:
http://pecl.php.net/package/redis/3.1.1/windows
下载7.1对应的版本。
② 安装
将下载解压的php_redis.dll放在php解释器的ext,会发现mysql等的模块也都放在这里,然后打开php.ini,找到;extension=php_bz2.dll,在其上面添加extension=php_redis.dll,也就是在extension的配置区域的头部,添加上这个redis的配置。安装就算完成了。
③ 查看配置信息
重启服务器或者重启计算机,index.php的路径下添加一个查看页面:phpinfo.php,在里面添加:
- <?php
- echo phpinfo();
- ?>
然后访问http://yourdomain.com/phpinfo.php,可以看到配置信息,寻找有没有redis配置成功的信息,如果有则配置完成了。
3、php原生的方式操作redis
- // 原生redis类库,不需要config/redis.php
- $redis = new Redis();
- $redis->connect('127.0.0.1',6379);
- //$redis->set('key10','xx10',20);//第三个参数是存续时间,单位是秒,如果不填则为永久
- echo $redis->get('key10');
4、配置redis.php
在myApplication/config下创建文件redis.php:
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- /**
- * Created by PhpStorm.
- * Date: 2017/2/9
- * Time: 13:32
- */
- $config['socket_type'] = 'tcp';
- $config['host'] = '127.0.0.1';
- $config['password'] = NULL;
- $config['port'] = 6379;
- $config['timeout'] = 0;
- ?>
不管是使用框架的redis库还是下面的自定义redis库都需要这个配置文件。
除了配置redis.php之外,还必须在application/config/config.php里面配置我们使用的缓存类型,默认是这样的:
- $config['sess_driver'] = 'files';
- $config['sess_cookie_name'] = 'ci_session';
- $config['sess_expiration'] = 7200;
- $config['sess_save_path'] = NULL;
- $config['sess_match_ip'] = FALSE;
- $config['sess_time_to_update'] = 300;
- $config['sess_regenerate_destroy'] = FALSE;
如果我们使用redis,那么要配置成类似这样:
- $config['sess_driver'] = 'redis';
- $config['sess_cookie_name'] = 'ci_session';
- $config['sess_expiration'] = 0;
- $config['sess_save_path'] = 'tcp://127.0.0.1:xxxx';
- $config['sess_match_ip'] = FALSE;
- $config['sess_time_to_update'] = 600;
- $config['sess_regenerate_destroy'] = TRUE;
5、使用CI框架的redis库
- // 框架的redis库
- $this->load->driver('cache');
- $this->cache->redis->save('key11','xx11');//这里注意,第三个参数是时间,在自定义redis库会说明
- echo $this->cache->redis->get('key11');
6、使用自定义的redis类库
① Rediscli_default.php
自定义redis类库可以从system/libraries/Cache/drivers/Cache_redis.php拷贝一份,改名为Rediscli_default.php,类名也改为Rediscli_default,除此之外无需改变,可以再自己添加更多方法,将其放在myApplication/libraries/Rediscli/drivers/下
② Rediscli.php
在myApplication/libraries/Rediscli/下创建一个Rediscli.php
- <?php
- defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );
- /**
- * Created by PhpStorm.
- * Date: 2017/2/9
- * Time: 20:00
- */
- class Rediscli extends CI_Driver_Library {
- public $valid_drivers;
- public $CI;
- function __construct() {
- $this->CI = & get_instance ();
- $this->valid_drivers = array (
- 'default'
- );
- }
- }
③ 调用
- // 自定义类,需要配置
- $this->load->driver('rediscli');
- if ($this->rediscli->default->is_supported())
- {
- echo $this->rediscli->default->get('key2');
- }
④ 时间
这个自定义redis库和框架的库是一样的,在这里集中说明一下。
$this->cache->redis->save('key11','xx11',1000);
这是保存值,第3个参数是时间,这个时间不能省略。通过查看函数可以看到,这个参数默认值是60秒,而非永久,所以这个参数是不能省略的。
7、注意这种情况
- // 文本存储
- $this->load->driver('cache',array('adapter'=>'redis','backup'=>'file'));
- $this->cache->save('key5','xx5',10000);
- echo $this->cache->get('key5');//xx5
这个代码的意思是,首先使用redis来存储,如果没有找到的话,就使用文本存储。会发现在myApplication/cache存放了文本文件,每个key会有一个文本。
因为没有报错,所以一时可能不知道这个数据到底存在哪里。
这种还是少用吧,毕竟用redis是为了速度更快。
Tags: CodeIgniter redis
相关文章
- ·CodeIgniter3.0+框架自定义异常处理的方法介绍(2020-02-08)
- ·解决Codeigniter不能上传rar和zip压缩包问题(2020-10-19)
- ·CodeIgniter框架中_remap()使用方法2例(2020-10-20)
- ·CI(CodeIgniter)框架中的增删改查操作(2021-02-11)
- ·CodeIgniter启用缓存和清除缓存的方法(2021-02-13)
- ·让CodeIgniter数据库缓存自动过期的处理的方法(2021-02-13)
- ·Codeigniter生成Excel文档的简单方法(2021-02-13)
- ·Codeigniter+PHPExcel实现导出数据到Excel文件(2021-02-13)
- ·Codeigniter实现智能裁剪图片的方法(2021-02-13)
- ·Codeigniter整合Tank Auth权限类库详解(2021-02-18)
- ·新浪SAE云平台下使用codeigniter的数据库配置(2021-02-18)
- ·Codeigniter实现处理用户登录验证后的URL跳转(2021-02-18)
- ·让codeigniter与swfupload整合的最佳解决方案(2021-02-18)
- ·Codeigniter实现多文件上传并创建多个缩略图(2021-02-18)
- ·让CodeIgniter的ellipsize()支持中文截断的方法(2021-02-18)
- ·CodeIgniter框架过滤HTML危险代码(2021-02-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)