为什么引入Memcached?

本文探讨了memcached在ITOO系统中的引入原因及其应用,包括权限登录、学生端考评系统、答题卡缓存等场景。通过memcached的分布式存储、快速响应和服务器扩展能力,显著提升了用户体验和系统性能。

    刚memcached了解学习,一直是处于一个懵懂的状态,先是对memcached进行了一个了解,但我们为什么要在ITOO中引入memcached呢?当问我的时候当时自己脑子中打了一个大大的

 

    这就必须去考虑为什么要引入memcached,应该从哪里开始研究呢?首先从memcached的优点,先来看一下它的优点:


      【memcached优点】

      1)基于客户端分布式

      2)速度快

      3)memcached不互相通信

      4)适合读多少写

 

     【应用】

 

    我们从memcached的优点来分析一下在ITOO中为什么要引入它,首先我们的系统是利用WCF实现分布式的,而且五个系统是独立开发,并且每个系统都有自己的库和服务器,如图为五个系统:

         

   如果我们在权限登录的时候使用Session,只是存到了权限服务器中,别的系统无法从权限服务器来获取Session值,这时我们的memcached作为第三方的缓存就发挥其强大的功能了,存入memcached的是根据hash算法按照key-value来存入,只要知道key我们就可以从memcached中获得数据来实现五个系统共用用户的信息。(分布式存储)

 

    在ITOO中应用主要在考评系统的学生端,第一个学生访问时将题缓存到memcached中,第二个学生根据key值,直接从缓存中读取,这样在大量用户访问时,能够提高用户的体验度,也许第一个人可能会慢一些,但我们更看重的是大多数用户的感受,而不仅仅是个别的用户。(速度快)

 

    在ITOO还有一个应用,就是将考试过程中右侧的答题卡(用来显示某道题是否已经做)直接存入到缓存中,这个数据是不需要存入到数据库中,我们采用缓存,每个用户在考试中,根据Key-value,将数据存入缓存,不会加重数据库的负担,而且也能为用户提供良好的用户体验。(速度快)

 

    memcached的前两个优点我都已经想到了应用场景,第三点是说memcached服务器之间并不会通信,我们可以自己的需要来增加memcached服务器来来满足我们的需要,而不需要担心是否对其他的memcached有影响。


    也许还有很多应用场景,欢迎大家来与我共同讨论,咱们共同成长。。。


      【总结】

    我自己的观点是应用缓存我们是用空间来提高速度,这跟老师说的框架是一个意思,应用框架可以减少开发量,但会降低速度,而memcached是消耗服务器的一部分空间来提升系统的速度。 

    这次我们主要说了一下memcached的优点,接下来说明memcached的缺点,大家期待更新!    

    

<think>我们正在处理一个Java项目中无法引入Memcached依赖的问题。根据提供的引用,我们可以看到有几种不同的Java客户端可用于MemcachedMemcached-java-client、Spymemcached和XMemcached。其中,引用[3]提到Memcached-java-client是较早推出的,应用广泛且稳定,但使用阻塞IO且不支持CAS操作。用户遇到的问题是无法引入memcached依赖。在引用[2]中,我们看到一个通过Maven安装本地JAR文件的示例,该示例将本地的memcached.jar文件安装到本地Maven仓库中,这样在项目中就可以通过Maven坐标来引用。因此,可能的解决方案是:1.如果使用的是Maven项目,并且无法从公共仓库获取memcached客户端的依赖,可以尝试将JAR文件手动安装到本地Maven仓库,然后在pom.xml中引用。2.检查依赖的坐标是否正确。不同的客户端有不同的groupId和artifactId。根据引用,我们有以下几种客户端的可能坐标:-Memcached-java-client:引用[2]中给出的示例是:groupId:com.dangaartifactId:memcachedversion:2.5.3-Spymemcached:通常的坐标是:groupId:net.spyartifactId:spymemcachedversion:2.12.3(具体版本可能不同,需查看最新)-XMemcached:通常的坐标是:groupId:com.googlecode.xmemcachedartifactId:xmemcachedversion:2.4.7(具体版本可能不同,需查看最新)如果用户无法从公共仓库下载(比如因为公司内网限制),可以按照以下步骤将JAR安装到本地仓库:步骤1:下载所需的JAR文件(例如memcached.jar,对应Memcached-java-client)。步骤2:使用Maven命令安装到本地仓库。命令格式如下:```mvninstall:install-file-Dfile=jar文件路径-DgroupId=groupId-DartifactId=artifactId-Dversion=版本-Dpackaging=jar```例如,对于Memcached-java-client,如引用[2]所示:```mvninstall:install-file-Dfile=e:/memcached.jar-DgroupId=com.danga-DartifactId=memcached-Dversion=2.5.3-Dpackaging=jar-DgeneratePom=true```步骤3:在项目的pom.xml文件中添加依赖:```xml<dependency><groupId>com.danga</groupId><artifactId>memcached</artifactId><version>2.5.3</version></dependency>```如果用户使用的是其他构建工具(如Gradle),也可以类似地将JAR安装到本地仓库,然后在build.gradle中添加依赖。另外,如果用户使用的是Spymemcached或XMemcached,并且这些依赖在公共仓库(如MavenCentral)中可用,那么可以直接在pom.xml中添加依赖,无需手动安装。例如:Spymemcached:```xml<dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.3</version></dependency>```XMemcached:```xml<dependency><groupId>com.googlecode.xmemcached</groupId><artifactId>xmemcached</artifactId><version>2.4.7</version></dependency>```如果用户无法下载,同样可以按照上述步骤将对应客户端的JAR安装到本地仓库。总结:无法引入依赖通常是因为依赖不在仓库中,或者坐标写错。我们可以通过手动下载JAR并安装到本地Maven仓库,然后使用正确的坐标来引入。最后,根据用户问题,生成相关问题。</think>### Java项目中解决无法引入Memcached依赖的方法 在Java项目中无法引入Memcached依赖通常是由于以下原因导致的,以下是逐步解决方案: #### 1. **检查依赖坐标正确性** - **常见客户端依赖坐标**: - **Memcached-java-client**(官方客户端): ```xml <dependency> <groupId>com.danga</groupId> <artifactId>memcached</artifactId> <version>2.6.6</version> <!-- 最新稳定版 --> </dependency> ``` - **Spymemcached**(高性能客户端): ```xml <dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.12.3</version> </dependency> ``` - **XMemcached**(阿里开源客户端): ```xml <dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</artifactId> <version>2.4.7</version> </dependency> ``` - **验证方式**:通过[Maven中央仓库](https://search.maven.org/)搜索确认坐标是否存在。 #### 2. **手动安装本地JAR(当依赖不在中央仓库时)** - **步骤**: 1. 下载JAR文件(如`memcached.jar`) 2. 执行Maven安装命令: ```bash mvn install:install-file \ -Dfile=/path/to/memcached.jar \ -DgroupId=com.danga \ -DartifactId=memcached \ -Dversion=2.5.3 \ -Dpackaging=jar \ -DgeneratePom=true ``` 3. 在`pom.xml`中添加依赖: ```xml <dependency> <groupId>com.danga</groupId> <artifactId>memcached</artifactId> <version>2.5.3</version> </dependency> ``` - **适用场景**:企业私有组件或历史版本组件[^2]。 #### 3. **配置私有仓库(企业环境)** - 在`pom.xml`中添加私有仓库配置: ```xml <repositories> <repository> <id>company-repo</id> <url>https://repo.example.com/maven2/</url> </repository> </repositories> ``` #### 4. **检查依赖冲突** - 使用Maven命令分析冲突: ```bash mvn dependency:tree -Dverbose ``` - 解决方案:在依赖声明中排除冲突组件: ```xml <dependency> <groupId>com.danga</groupId> <artifactId>memcached</artifactId> <version>2.6.6</version> <exclusions> <exclusion> <groupId>冲突的groupId</groupId> <artifactId>冲突的artifactId</artifactId> </exclusion> </exclusions> </dependency> ``` #### 5. **验证依赖加载** - 创建测试类验证连接: ```java import net.spy.memcached.MemcachedClient; public class MemcachedTest { public static void main(String[] args) throws Exception { MemcachedClient client = new MemcachedClient( new InetSocketAddress("localhost", 11211)); client.set("test", 3600, "Hello Memcached"); System.out.println("Value: " + client.get("test")); } } ``` > **关键提示**:Memcached-java-client作为最早期的Java客户端,虽稳定但已停止更新,推荐使用Spymemcached或XMemcached以获得更好的性能和特性支持[^3]。
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值