memcache和redis的区别、联系
区别:
memcache:
每个key的数据最大是1M
对各种技术支持比较全面,session可以存储memcache中,各种框架(例如thinkphp)对memcache支持的比较好
比较老牌、传统的内存缓存技术
适合存储简单、实用的数据
数据类型只有String
没有持久化
redis:
每个key的数据最大是1G
对各种技术支持没有memcache更好。
新兴的内存缓存技术
适合做集合计算(list/set/zset)
数据类型较丰富(String/list/Set/zset/hash)
有持久化
联系:
数据存储在内存当中,数据模型都是key-value
两种内存缓存技术擅长的地方
memcache:对session支持,各种框架支持
redis:集合计算
Redis的分布式是“主从模式”结构,一主多从。
Memcache的分布式与Redis的不同,其是把一台memcache的工作平均分配给多个memcache分担。
分布式具体的实施:
1) 可以在一个服务器里边开启多个memcache服务
2) 可以配置多个服务器,每个服务器里边都运行memcache服务
每个memcache服务器都是平等的,中间通过“算法”保证数据的平均分配。
php代码的编写还保持原有习惯即可。
key的分配原则:依次轮询、求余
- 终端方式操作memcache
走telnet协议(SecureCRT也可以操作)
- session存入memcache中
多个服务器在真实环境中需要共享session信息,所以要存储memcache中
- 缓存失效
1) 有效时间过期,通过懒惰模式删除
2) 空间不足,通过LRU方式强制删除最近不使用的key
-M 参数可以禁止LRU的使用
- 分布式部署memcache
不同于主从模式,其为平均存储各个key到memcache中。
addServer(主机名,端口);
- 案例效果使用