大家好,今天小编关注到一个比较有意思的话题,就是关于memcached的问题,于是小编就整理了2个相关介绍memcached的解答,让我们一起看看吧。
Memcached真的过时了吗?redis与Memcached的比较?
很多开发者都认为redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势。一直在思考这个原因,目前想到的原因有这几方面。
Libevent。和Memcached不同,Redis并没有选择libevent。Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。Redis用libevent中两个文件修改实现了自己的epoll event loop(4)。业界不少开发者也建议Redis使用另外一个libevent高性能替代libev,但是作者还是坚持Redis应该小巧并去依赖的思路。一个印象深刻的细节是编译Redis之前并不需要执行./configure。
CAS问题。CAS是Memcached中比较方便的一种防止竞争修改资源的方法。CAS实现需要为每个cache key设置一个隐藏的cas token,cas相当value版本号,每次set会token需要递增,因此带来CPU和内存的双重开销,虽然这些开销很小,但是到单机10G+ cache以及QPS上万之后这些开销就会给双方相对带来一些细微性能差别(5)。
redis和memcached的区别?
Redis和Memcached都是常见的分布式内存缓存系统,用于减轻数据库负载,提高系统性能。以下是它们的区别:
1. 数据类型:Redis是一个高级键值存储系统,支持多种数据类型(如字符串、哈希表、列表、***、有序***等),并具有一些特殊的操作(如发布/订阅、事务、数据过期等)。而Memcached只是一个简单的键值存储系统,只支持字符串类型。
2. 存储方式:Redis将数据存储在内存中,然后可以选择将数据持久化到磁盘上,以便在重启后恢复数据。在内存不足时,Redis可以使用LRU(最近最少使用)算法进行数据淘汰。而Memcached只将数据存储在内存中,不支持数据的持久化和数据淘汰机制。
3. 数据一致性:Redis具有原子性的操作,支持复杂的数据结构操作和事务,保证了数据的一致性。而Memcached不支持事务,对数据的操作只能通过简单的SET和GET命令,不保证数据的一致性。
4. 高可用性:Redis采用主从***和哨兵机制,可以提供高可用性。主从***可以实现数据的备份和故障转移,哨兵机制可以监控主节点的状态,自动进行主节点的切换。而Memcached没有内置的高可用性机制,只能通过客户端进行一些手动配置和操作。
5. 扩展性:Redis支持分片和集群模式,可以通过分片将数据存储在多个节点上,并在需要时自动进行数据迁移和分配。而Memcached不支持自动的分片和集群模式,需要通过一些客户端的组件进行分片操作。
总体来说,Redis功能更丰富,支持更多的数据类型和操作,提供了更高级的特性和可靠性。但对于一些简单的缓存需求,或者对高可用性和扩展性要求不高的场景,Memcached也是一个不错的选择。
到此,以上就是小编对于memcached的问题就介绍到这了,希望介绍关于memcached的2点解答对大家有用。