memcache缓存与redis缓存

memcache 介绍
memcache使用场景
1,非持久存储:对数据存储要求不高
2,分布式存储:不适合单机使用
3,key/value存储:格式简单,不支持list,array数据格式

memcache 系统类 方法
$m = new Memcached();
$array = array(
array('127.0.0.1','11211'),
array('127.0.0.2','11211'),
)
$m = addServers($array);
print_r($m->getStats()); 服务器运行状态
print_r($m->getVersion()); 服务器版本号



memcache 数据类 方法
addServers
add
set
delete
get
flush
replace
increment
decrement

优雅快速的使用memcache
setMulti 一次性添加多条
$data = array(
array('key','value'),
array('key2','value2')
);
$m->setMulti($data,0);
$result = $m->getMulti(array('key','key2'));
print_r($result);

deleteMulti
getMulti
getResultCode 上一次操做返回的编码,数字
getResultMessage 编码数字对应告诉咱们操做结果


封装本身的memcache类


项目中使用Memcache
1,即时生成缓存
2,提早生成缓存
3,永久缓存

memcache最后注意事项
1,不要在单机模式中使用Memcached
2,不要只使用memcached保存重要数据
3,按期查看缓存的分布情况和击中状况


redis
redis是远程的,通常存储在服务端
redis是基于内存的
redis 是非关系型数据库
redis的应用场景
1,缓存
2,队列
3,数据存储
redis安装
安装环境
redis官网下载redis最新版本
预装软件
gcc tcl c语言编写的软件

redis server 服务端
redis cli 客户端


php操做redis
redis文档地址:https://github.com/phpredis/phpredis
,redis类的命名空间是根,phprdis的命令和参数基本和redis.io中的实际命令对应
$redis = new \Redis();
$redis->connect("127.0.0.1",7200);


redis的数据类型介绍
数据类型 存储的值 读写能力
string 能够是字符串,整数或浮点,统称为元素 对字符串操做,对整数类型加减
List 一个序列集合且每一个节点都包好了一个元素 序列两端推入,或弹出元素修剪,查找或移除元素
set 各不相同的元素 从集合中插入或删除元素
hash 有key-value的散列组,其中key是字符串,value是元素 按照key进行增长删除
sort set 带分数的score-value有序集合,其中score为浮点,value为元素 集合插入,按照分数范围查找

String类型基本的类型,每一个value都对应一个key,适合字符串和数值型的存储以及整型的加减运算设置值 set key value取出值 get key
incr:自增decrby:减,例如,decrby key1 2 //对key1所对应的值减2

list类型為有序列表
有序的列表,左进右出(队列),容许重复#lpush list1 12#lpush list1 13#lpush list1 14这时候的list1列表为 12 13 14#rpop list1返回14这时候list1列表为 12 13

redis类型之set类型--存储无序的元素1.set类型,无序的方式存储多个不一样的元素,对元素能够进行快速的添加、查找和删除;相同的元素只算一个。添加元素:sadd key value判断有多少个元素:scard key判断某个元素是否在set里面:sismember key value删除某个元素:srem key value

Redis类型之hash类型1.Hash只要求键不同,就是不一样的条数插入/修改:hset hash1 key1 12获取:hget hash1 key1查看hash长度:hlen key一次性获取:hmget hash1 key1 key2

Redis类型之sort set类型:存储和hash同样,都是一个映射。存储的是分数与元素的映射。能够看出是排行榜。value必须是全局惟一。score 是浮点型。sort set类型操做,若是两个元素的score同样,按照字节顺序排列前后增长/修改:zadd zset1 10.1 val1查看个数:zcard zset1查看排名:zrange zset1 0 2 withscores查看某个value排名:zrank zset1 val2

php操做redis
String set ,get
list 队列 lpush,rpop 左进右出
set sadd,smembers(集合全部元素以数组返回) (数据必须惟一)
hash hset,hget hmget(全部信息返回回来,数组)
sort set 排行榜 zadd zrange(从高到底排名,从0开始)



redis 与memcache的区别
  1. Redis中,并非全部的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
  2. Redis在不少方面具有数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存。
  3. 他们的扩展都须要作集群;实现方式:master-slave、Hash。
  4. 在100k以上的数据中,Memcached性能要高于Redis。
  5. 若是要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而若是Redis采用hash结构来作key-value存储,因为其组合式的压缩,其内存利用率会高于Memcached。固然,这和你的应用场景和数据特性有关。
  6. 若是你对数据持久化和数据同步有所要求,那么推荐你选择Redis,由于这两个特性Memcached都不具有。即便你只是但愿在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
  7. Redis和Memcache在写入性能上面差异不大,读取性能上面尤为是批量读取性能上面Memcache更强