redis缓存

Redis除了做为存储以外还提供了一些其它方面的功能,好比聚合计算、pubsub、scripting等,对于此类功能须要了解其实现原理,清楚地了解到它的局限性后,才能正确的使用,好比pubsub功能,这个实际是没有任何持久化支持的,消费方链接闪断或重连之间过来的消息是会所有丢失的,又好比聚合计算和scripting等功能受Redis单线程模型所限,是不可能达到很高的吞吐量的,须要谨慎使用。redis

1.Redis使用最佳方式是所有数据in-memory。 2.Redis更多场景是做为Memcached的替代者来使用。 3.当须要除key/value以外的更多数据类型支持时,使用Redis更合适。 4.当存储的数据不能被剔除时,使用Redis更合适。缓存

在Redis中,并非全部的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。Redis只会缓存全部的 key的信息,若是Redis发现内存的使用量超过了某一个阀值,将触发swap的操做,Redis根据“swappability = age*log(size_in_memory)”计 算出哪些key对应的value须要swap到磁盘。而后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis能够 保持超过其机器自己内存大小的数据。数据结构

memcached和redis的比较:

Memcached是多线程。多线程模型能够发挥多核做用,可是引入了cache coherency和锁的问题 Redis使用单线程的IO复用模型。多线程

Memcached使用预分配的内存池的方式。 Redis使用现场申请内存的方式来存储数据。并发

Memcached提供了cas命令,能够保证多个并发访问操做同一份数据的一致性问题。 Redis没有提供cas 命令,并不能保证这点,不过Redis提供了事务的功能,能够保证一串 命令的原子性,中间不会被任何操做打断。app

Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能 Redis除key/value以外,还支持list,set,sorted set,hash等众多数据结构,提供了KEYS进行枚举操做,但不能在线上使用,若是须要枚举线上数据,Redis提供了工具能够直接扫描其dump文件,枚举出全部数据,Redis还同时提供了持久化和复制等功能。memcached

相关文章
相关标签/搜索