gpt4 book ai didi

java - 尝试实例化 xmemcached 客户端

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:33:38 27 4
gpt4 key购买 nike

我一直在尝试了解 memcached 的使用等,并尝试从昨天开始通过阅读一些稀缺资源来设置它。让我先展示一下我拥有的东西。

  1. 已安装内存缓存服务器
  2. 如解释的那样为 spring 配置 here :

    <beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <import resource="simplesm-context.xml" />
    <aop:aspectj-autoproxy />

    <bean name="defaultMemcachedClient" class="com.google.code.ssm.CacheFactory">
    <property name="cacheClientFactory">
    <bean class="com.google.code.ssm.providers.xmemcached.MemcacheClientFactoryImpl" />
    </property>
    <property name="addressProvider">
    <bean class="com.google.code.ssm.config.DefaultAddressProvider">
    <property name="address" value="127.0.0.1:11211" />
    </bean>
    </property>
    <property name="configuration">
    <bean class="com.google.code.ssm.providers.CacheConfiguration">
    <property name="consistentHashing" value="true" />
    </bean>
    </property>
    </bean>
    </beans>
  3. 通过 spring 成功创建到服务器的连接:

    20:06:07,864 WARN  [main] (XMemcachedClient.java:645) - XMemcachedClient use Text protocol
    20:06:08,112 WARN [main] (AbstractController.java:372) - The Controller started at localhost/127.0.0.1:0 ...
    20:06:08,139 WARN [Xmemcached-Reactor-0] (MemcachedConnector.java:239) - Add a session: 127.0.0.1:11211

所以下一步是测试它,这提供了关于 memcached 的很好/简单的解释:http://www.majordojo.com/2007/03/memcached-howto.php

我想试试这个:

Class Foo {
public static findById(id) {
if (obj = memcached.get(id)) return obj;
obj = loadFromDatabase(id);
memcached.put(id,obj);
return obj;
}
}

但是这个站点上没有任何地方说明哪种类型的对象是 memcached。所以我尝试了以下:

import net.rubyeye.xmemcached.MemcachedClient

Class Foo {
@Autowired
MemcachedClient defaultMemcachedClient;
public static findById(id) {
if (obj = memcached.get(id)) return obj;
obj = loadFromDatabase(id);
memcached.put(id,obj);
return obj;
}
}

我从日志中得到的错误是:

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [net.rubyeye.xmemcached.MemcachedClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency

我认为 defaultMemcachedClient bean 应该是我的 memcached 客户端。这不明显。我在这里做什么?有人有想法吗?关联?建议?有什么事吗?

最佳答案

defaultMemcachedClient bean 的类型是 Cache与 xmemecached 无关。

如果您想直接使用 memcached,请不要使用 Simple Spring Memcached . SSM 用于使用拦截器 (AOP) 和注释进行缓存。在你的情况下:

public class Foo {
// cache for 1 hour
@ReadThroughSingleCache(namespace="foo", expiration=3600)
public Object findById(@ParameterValueKeyProvider int id) {
return loadFromDatabase(id);
}
}

当调用此方法时,在调用此方法的主体之前,拦截器检查缓存中是否有键下的任何值(键是使用命名空间和 id 参数创建的)。如果缓存中有值,则将其返回给调用者并且不执行方法体 (loadFromDatabase)。如果缓存中没有值则执行方法体并将结果存储在缓存中并返回给调用者。

如果您想直接使用 memcached 客户端,您仍然可以使用 SSM 中的缓存对象,但您可能对使用 xmemcached 感兴趣.

关于java - 尝试实例化 xmemcached 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com