Memcached介绍和详解

Memcached介绍

在这里插入图片描述

Memcached是一个高性能的分布式内存对象缓存系统,它通过在内存中缓存数据来减少数据库负载,加快动态Web应用程序的响应速度。

以下是Memcached的一些关键特点和作用:

  • 分布式缓存:Memcached是分布式的,不同于本地缓存如SharedMemory或APC,它通过网络连接不同服务器上的缓存数据,实现数据的快速访问和共享。

  • 性能提升:由于Memcached将常用数据存储在内存中,这可以显著减少对数据库的直接访问,从而降低了数据库的负载,并提高了整个系统的访问速度。

  • 开源软件:Memcached是开源的,以BSD license授权发布。它的源代码公开,允许任何人使用和修改,这也促进了其广泛的应用和发展。

  • 安全性考虑:由于Memcached缺乏认证以及安全管制,通常建议将其部署在内部网络或防火墙之后,以避免潜在的安全风险。

  • 广泛应用:Memcached不仅适用于Web应用程序,还被用于移动应用、游戏、广告技术以及电子商务等多个领域,为实时应用程序提供支持。

  • 亚毫秒级响应:Memcached能够实现极快的响应时间,这对于要求高吞吐量和低延迟的现代应用程序来说至关重要。

Linux安装教程

Memcached 支持许多平台:Linux、FreeBSD、Solaris、Mac OS,也可以安装在Windows上。

  • Linux系统安装memcached,首先要先安装libevent库。
yum install libevent libevent-devel     
  • 安装Memcached
yum install memcached
  • Memcached 运行
/usr/local/memcached/bin/memcached -h       

Spring整合Memcached

  • 添加依赖
<dependency>
    <groupId>com.googlecode.xmemcached</groupId>
    <artifactId>xmemcached</artifactId>
    <version>2.4.7</version>
</dependency>
  • 配置memcache
@Configuration
public class XMemcachedConfig {
    @Bean
    public MemcachedClient getMemcachedClient() throws IOException {
        MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder("localhost:11211");
        MemcachedClient memcachedClient = memcachedClientBuilder.build();
        return memcachedClient;
    }
}

常用命令

  • set 命令
    Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。
set key flags exptime bytes [noreply] 
value 
  • add 命令
    Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
add key flags exptime bytes [noreply]
value
  • replace 命令
    Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
    如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
add key flags exptime bytes [noreply]
value
  • append 命令
    Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。
append key flags exptime bytes [noreply]
value
  • CAS 命令
    Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作
    它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
cas key flags exptime bytes unique_cas_token [noreply]
value
  • get 命令
    Memcached get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。
get key
  • delete 命令
    Memcached delete 命令用于删除已存在的 key(键)。
delete key [noreply]

redis和Memcached对比

Redis和Memcached都是常见的键值对存储系统,用于缓存数据。下面是Redis和Memcached之间的一些对比:

对比RedisMemcached
数据结构支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。这使得Redis在处理复杂数据和实现更多功能方面更加灵活。仅支持简单的键值对结构,只能存储字符串类型的数据。
持久化提供持久化机制,支持快照(snapshotting)和AOF(Append-only file)两种方式。这样可以在服务器重启后恢复数据,防止数据丢失。不提供持久化支持,数据只存在于内存中。服务器重启后,所有数据将被清空。
内存管理采用灵活的内存管理策略,可以将数据持久化到磁盘上,并在需要时从磁盘中加载数据。可以设置最大内存限制,并支持内存淘汰策略,如LRU(最近最少使用)。将所有数据存储在内存中,并且没有内存淘汰机制。当内存满时,新的数据无法存储,需要通过删除旧的数据来释放内存。
多线程支持采用单线程模型,通过异步I/O来实现高性能。它可以处理并发请求,并且没有锁竞争,因此具有较低的线程开销。采用多线程模型,使用线程池来处理并发请求。在高并发情况下,可以通过多线程处理请求提高吞吐量。
数据一致性支持主从复制和Sentinel哨兵机制,可以实现数据的自动备份和故障转移,提供更高的可用性和数据一致性。不支持自动备份和故障转移,不具备数据一致性保障。
生态系统和社区支持拥有庞大的开源社区和丰富的生态系统,提供了许多工具、扩展和解决方案。社区相对较小,生态系统相对简单。
  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴代庄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值