windows下使用redis
- 安装redis
redis
官方网站redis.cn
redis
官方文档,包括redis的使用,管理等:http://www.redis.cn/documentation.html
redis
的windows版有MS Open维护,代码托管在GitHub上Redis-windows下载完成后在Bin
目录下可以找到exe文件 -
windows下启动Redis
- 加入上面下载的redis的目录是
F:\lmmbao\mengbao-lib\redis-2.8\bin\release\redis
- 打开cmd窗口cd到上面的目录
上面的命令将启动Redis,Redis的配置都在redis.windows.conf里,具体配置参数以及其含义可以参考官方的文档>cd F:\lmmbao\mengbao-lib\redis-2.8\bin\release\redis> >redis-server redis.windows.conf
- 打开另一个cmd窗口,之前的不要关掉,进入redis的目录,执行下面的命令连接redis
>redis-cli.exe -h 127.0.0.1 -p 6379 127.0.0.1:6379>
- 然后就可以对redis进行操作了
127.0.0.1:6379>set name haha OK 127.0.0.1:6379>get name "haha" 127.0.0.1:6379>
- 加入上面下载的redis的目录是
-
PHP
扩展Redis
,PHP
的第三方redis库有很多,我们这里采用的比较广泛的phpredis
扩展库,该扩展用C语言编写,要使用该库需要进行编译在linux下就是生成so
文件作为PHP的扩展模块,linux下的编译比较简单,使用make命令加上可选参数即可,在windows
下则需要生成一个动态链接库载入到当前系统中,这个编译需要根据我们的PHP
版本以及apache
的编译器版本进行编译,一般有VC6
,VC9
,VC11
三种,我们windows
本地用的是VC11
,需要使用VC11
进行编译,对应的VS
版本至少是VS2012
,我们为了保证项目进度采用别人编译好的redis
动态链接库.主要有两个文件
然后修改PHP.ini
配置文件添加两个动态库的扩展,然后重启apache
-
PHP中使用Redis
主要参考phpredis
的官方文档进行介绍,使用phpredis
还是很简单的.PhpRedis
将所有的Redis的操作封装成了一个Redis
类,还有一个RedisException
的类,当连接Redis
失败则不会抛出一个RedisException
对象。除了这两个类之外,还包含一些常量的定义:Redis::REDIS_STRING - String Redis::REDIS_SET - Set Redis::REDIS_LIST - List Redis::REDIS_ZSET - Sorted set Redis::REDIS_HASH - Hash Redis::REDIS_NOT_FOUND - Not found / other
- 连接Redis
连接Redis有两种方式一种是普通的连接使用connection
,open
,一种是常连接使用pconnection
,popen
参数
host: 主机地址
port: 端口号,可选默认是6379
timeout:浮点型,单位是秒,可选,默认0
reserved: 预留字段,如果声明了retry_interval那么应该置为NULL$redis->connect('127.0.0.1', 6379); $redis->connect('127.0.0.1'); // port 6379 by default $redis->connect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout. $redis->connect('/tmp/redis.sock'); // unix domain socket. $redis->connect('127.0.0.1', 6379, 1, NULL, 100); // 1 sec timeout, 100ms delay between reconnection attempts.
pconnection
,popen
的参数和connection
,open
一样。 - 认证
auth
参数:password
返回值:true
|false
$redis->auth('pass');
- 连接Redis
select
选择数据库
参数:dbindex
数据库的索引值
返回参数:true
|false
eg:
$redis->select(0); $redis->set('x','42'); $redis->move('x',1); $redis->select(1); $redis->get('x');
close
关闭连接
关闭Redis
的连接,如果是使用pconnection
常连接的形式则不能使用该函数关闭连接setOption
配置Redis
参数
参数:name
---指定配置选项名字
value
---选项值
eg:
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); // 不适用串行化数据 $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); //使用内置的串行化 $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); // 使用 igBinary串行化 $redis->setOption(Redis::OPT_PREFIX, 'myAppName:'); // 使用用户自定义的key值前缀 /* Options for the SCAN family of commands, indicating whether to abstract empty results from the user. If set to SCAN_NORETRY (the default), phpredis will just issue one SCAN command at a time, sometimes returning an empty array of results. If set to SCAN_RETRY, phpredis will retry the scan command until keys come back OR Redis returns an iterator of zero */ $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY); $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
- getOption获取配置选项
参数:无
返回: 选项值
eg:
$redis->getOption(Redis::OPT_SERIALIZER); // return Redis::SERIALIZER_NONE, Redis::SERIALIZER_PHP, or Redis::SERIALIZER_IGBINARY.