基本知识
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- memcached单个key老版本是1M,新版本是2M。我们可以通过memcache.h文件去修改他的单个KEY的大小。
- redis单个key大小为512M
- memcached是一个多线程的缓存服务器,而redis是一个单线程的服务器
- memcached数据不能持久化,断电后数据丢失
- redis是可以进行持久化的。可以使用RDB机制和AOF机制进行数据持久化
- memcached不支持集群,它的多服务器情况是在addServers的时候,由客户端使用hash的方式,分配至指定的服务器上的。
- redis支持集群,并且redis有最多16个库。memcached没有库的概念
- redis支持更多的数据类型,而memcached只有字符型,我们需要自行处理值。
- redis在使用的时候,还能单作队列服务器使用,还支持消息订阅(聊天室,消息推送)。
- redis内部实现的数据结构是字典
数据类型
类型 |
命令 |
说明 |
string |
set,get,exist,del,strlen,append,mset,megt,incr, incrBy |
字符:一个键最大能存储512MB |
list |
lpush,lpop,rpush,rpop,lrange,ltrim,lsize,lset |
列表:最多可存储 232 – 1 元素 (4294967295, 每个列表可存储40多亿) |
set |
sadd,sdiff,smove |
集合 |
zset |
zadd,zrange |
有序集合 |
hash |
zadd,zrange |
哈希:结构同表类似 |
其他命令
expire key 30 #设置key的过期时间
ttl key #查看key的剩余时间
rename oldkey newkey #重新命令key
del key #删除key
type key #查看key类型
zdiff key key #计算两个key的交集
select 0 #选择数据库
dbsize #查看数据库大小
keys * #查看所有的key
keys a* #查看所有以a开头的key
info keyspace #查看数据库key详细信息
数据持久化RDB和AOF
- AOF(append of file)追加
- RDB (Redis database) 快照
PHP下使用
- 实例化对象,调用方法(驼峰法)的命令如:lpush(命令)=> lPush(php方法)
<?php
//连接
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->set('ceshi', 123456789);
echo $redis->get('ceshi');
var_dump($redis->keys('*'));
//string
$redis->set('key', 'value');
$redis->get('key');
$redis->exists('key'); /* TRUE */
$redis->exists('NonExistingKey'); /* FALSE */
$redis->mGet(array('key1', 'key2', 'key3'));
//list
$redis->delete('key1');
$redis->lPush('key1', 'C'); // returns 1
$redis->lPush('key1', 'B'); // returns 2
$redis->lPush('key1', 'A'); // returns 3
/* 结构: [ 'A', 'B', 'C' ] */
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C'); /* key1 => [ 'A', 'B', 'C' ] */
$redis->rPop('key1'); /* key1 => [ 'A', 'B' ] */
//set
$redis->sAdd('key1' , 'member1'); /* TRUE, 'key1' => {'member1'} */