Redis客户端担负着通过网络协议与Redis Server进行通信的过程,通信的过程必须遵循协议规范,让客户的调用更加符合特定语言的使用习惯。
现有PHP客户端:rediska、phpredis、Predis、Redisent.
这些客户端中,有纯PHP的实现方案,也有二进制版本的实现方案。
这里选择二进制版本的phpreids。
//官网地址 http://redis.io/clients/
2.1 获取源码包
wget -c https://nodeload.github.com/nicolasff/phpredis/tarball/master
2.2 解包(没错你下载的就是master)
tar zxf master
cd nicolasff-phpredis-f1231c9/
2.3 准备php扩展库所需环境
/usr/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
2.4 配置
./configure --with-php-config=/usr/bin/php-config
2.5 编译安装
复制代码 代码示例:
make && make install
//生成的redis.so
file /usr/lib64/php/modules/redis.so
/usr/lib64/php/modules/redis.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
2.6 编辑/etc/php.ini (我的rpm 方式安装的php)
复制代码 代码示例:
extension_dir = "/usr/lib64/php/modules"
extension=redis.so
//重启apache
/etc/init.d/httpd restart
2.7 验证模块
复制代码 代码示例:
php -m | grep -i 'redis'
redis
//phpinfo 输出
2.8 验证
复制代码 代码示例:
cat > redis.php 《 EOF
<?php
$redis = new Redis();
$redis->connect('10.0.100.70',6379);
$redis->set('foo', 'Hello world');
echo $redis->get('foo');
?>
EOF
$ php redis.php
Hello world$
3 redis 定义
http://zh.wikipedia.org/wiki/Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持
。
数据模型
除了常规的数值或字符串,redis的键值还可以是以下形式之一:
Lists (列表)
Sets (集合)
Sorted sets (有序集合)
Hashes (哈希表)
持久化
通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录
每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。
主从同步
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
性能
相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显着的性能差异。
提供API的语言:
C/C++/C#/Clojure/Common Lisp/Erlang/Haskell/Java/Javascript/Lua/Objective-C/Perl/PHP/Python/Ruby/Scala/Go/Tcl
4 redis-cli 命令
连接操作相关的命令
quit:关闭连接(connection)
auth:简单密码认证
持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务
远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器
对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个key
rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key