Memcache和Redis
1、Memcache是多线程,Redis单线程
2、Memcache预分配(区、块),Redis现场申请内存,并且可以配置虚拟内存
3、Redis可以实现持久化,主从赋值,实现故障恢复
4、Memchace只是简单的key value,但是Redis支持数据类型比较多
数据结构简单 单线程无CPU切换性能损耗 没有多线程加锁问题
为什么是单线程
1、线程切换开销大
2、锁
3、非必要的内存拷贝
4、Redis多样的数据结构,每种结构只做自己爱做的事
Redis快的主要原因是:
完全基于内存
数据结构简单,对数据操作也简单
使用多路 I/O 复用模型
单进程单线程弊端
无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;
Redis持久化
1、快照(满足条件:m秒内超过n个key修改,自动快照)(dump.rdb)
2、AOF(边存边写到硬盘)
Redis用string存UserInfo会自动序列化(使用的是.NET自带的序列化)
拿的时候自动反序列化
Memcache要手动序列化
Redis用Hash存UserInfo 不用序列化和反序列化