php的redis安装配置,php+redis for CI框架在windows下的安装配置

本文档详细介绍了如何在Windows环境下配置PHP5.6和CodeIgniter3.x以支持Redis缓存,包括下载和安装Redis,添加PHP的Redis扩展,修改配置文件以及重启Web服务器。此外,还展示了如何在CI中创建自定义Redis类以扩展其功能,包括新增`lrange`方法,并提供了实例代码演示。
摘要由CSDN通过智能技术生成

我的环境:win7 64位 + phpstudy php5.6 + CI3.x

如果您想让CI支持redis缓存,需要在服务器上进行下列步骤。

需要下载的东西:redis windows安装包   PHP5.6 redis的dll扩展

redis windows安装包:我下载的是 64位 Redis-x64-3.2.100.msi ,如果32位的操作系统请下载32位。https://github.com/MicrosoftArchive/redis/releases

如果想设置连接密码什么的,可以参看:https://blog.csdn.net/hwjcmozw/article/details/77940852

用记事本或者Notepad++打开redis.windows.conf并找到“# requirepass foobared”这一行,在这一行下面增加一行“requirepass 你的密码”

cmd命令转入Redis的安装目录,并输入redis-server redis.windows.conf

PHP5.6 redis的dll扩展:https://pecl.php.net/package/redis/2.2.7/windows  【其他版本:https://pecl.php.net/package/redis】

关键点:NTS X86[可以打开Phpinfo()来查看一下,因为很多套件的Php都是32位的]

515a1e8a114e2950d4e304036bebc9f4.png

服务器php.ini修改:将下载的文件解压,然后将 php_redis.dll 放到php的ext目录,并且修改php.ini 增加extension = php_redis.dll

364306f38f7ad28c7bbec2567756c8bf.png

4ac3f0c85007c637816706776d935deb.png

重启 web服务器【是物理重启,不是重启web套件】,然后用phpinfo()函数看一下phpinfo中redis扩展是否启用。

486bc44183f334678f43711b4d68e614.png

CI如何使用redis?

1、在Application/config 目录下新建redis.php文件,内容大致如下:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

$config['socket_type'] = 'tcp'; //`tcp` or `unix`

$config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type

$config['host'] = '127.0.0.1';

$config['password'] = NULL;

$config['port'] = 6379;

$config['timeout'] = 0; //redis过期时间,秒,0为永不过期

1

2

3

4

5

6

7

8

9

10

<?php

defined('BASEPATH')ORexit('No direct script access allowed');

$config['socket_type']='tcp';//`tcp` or `unix`

$config['socket']='/var/run/redis.sock';// in case of `unix` socket type

$config['host']='127.0.0.1';

$config['password']=NULL;

$config['port']=6379;

$config['timeout']=0;//redis过期时间,秒,0为永不过期

2、程序中的应用:

//加载redis驱动

$this->load->driver('cache');

//然后直接使用方法

例如:$this->cache->redis->is_supported(); //是否支持redis

$this->cache->redis->save('key','value'); //保存redis键值

相应的方法链接:http://codeigniter.org.cn/user_guide/libraries/caching.html#redis

3、自行扩展CI的redis类

在实际的应用中,CI的缓存方法太少,不能发挥redis的效率。所以需要对CI的redis库进行重写。本来以为直接扩展extends CI_Cache_redis类可以,经过测试,发现不行。

于是重写了CI的redis类。

方法:

A、在Appliction/libraries 下新建类文件 CI_Cache_redis.php

B、复制\system\libraries\Cache\drivers\Cache_redis.php的内容到CI_Cache_redis.php

示例:新增redis方法到新建的类里:

/**

* Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。

* 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。

* 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

* @param string $key

* @param int $start

* @param int $end

* @return array

*/

public function lrange($key = '',$start = 0,$end = -1)

{

return $this->_redis->lRange($key,$start,$end);

}

C、可以参考redis的命令,进行扩展。 这个方法可以参看CI的文档:http://codeigniter.org.cn/user_guide/general/creating_libraries.html 中有关 使用你自己的类库替换原生类库 部分

D、使用自己替换的原生类库进行操作示例:

$this->load->library('CI_Cache_redis');

if($this->cache->redis->is_supported()) {

$this->redis = new CI_Cache_redis();

}

$this->redis->clean();// 清除数据库

$new = array(

'第一' => 'one',

'第二' => 'two'

);

$new1 = array(

'第3' => 'one',

'第4' => 'two'

);

$this->redis->rpush('a1',json_encode($new,JSON_UNESCAPED_UNICODE));

$this->redis->rpush('a1',json_encode($new1,JSON_UNESCAPED_UNICODE));

var_dump($this->redis->lrange('a1'));// 返回list中a1的所有值

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

//加载redis驱动

$this->load->driver('cache');

//然后直接使用方法

例如:$this->cache->redis->is_supported();//是否支持redis

$this->cache->redis->save('key','value');//保存redis键值

相应的方法链接:http://codeigniter.org.cn/user_guide/libraries/caching.html#redis

3、自行扩展CI的redis类

在实际的应用中,CI的缓存方法太少,不能发挥redis的效率。所以需要对CI的redis库进行重写。本来以为直接扩展extendsCI_Cache_redis类可以,经过测试,发现不行。

于是重写了CI的redis类。

方法:

A、在Appliction/libraries下新建类文件CI_Cache_redis.php

B、复制\system\libraries\Cache\drivers\Cache_redis.php的内容到CI_Cache_redis.php

示例:新增redis方法到新建的类里:

/**

* Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。

* 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。

* 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

* @param string $key

* @param int $start

* @param int $end

* @return array

*/

publicfunctionlrange($key='',$start=0,$end=-1)

{

return$this->_redis->lRange($key,$start,$end);

}

C、可以参考redis的命令,进行扩展。这个方法可以参看CI的文档:http://codeigniter.org.cn/user_guide/general/creating_libraries.html 中有关 使用你自己的类库替换原生类库 部分

D、使用自己替换的原生类库进行操作示例:

$this->load->library('CI_Cache_redis');

if($this->cache->redis->is_supported()){

$this->redis=newCI_Cache_redis();

}

$this->redis->clean();// 清除数据库

$new=array(

'第一'=>'one',

'第二'=>'two'

);

$new1=array(

'第3'=>'one',

'第4'=>'two'

);

$this->redis->rpush('a1',json_encode($new,JSON_UNESCAPED_UNICODE));

$this->redis->rpush('a1',json_encode($new1,JSON_UNESCAPED_UNICODE));

var_dump($this->redis->lrange('a1'));// 返回list中a1的所有值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值