Memcached集成配置Springboot以及xmemcached常规操作

目录

(一) 集成前配置

引入依赖

配置application.yml

自定义properties类

自定义Memcached连接配置类

MemcachedClien

tBuilder 相关属性含义

(二) MemcachedClient相关操作

插入Set

获取Get

touch更新数据超时时间

CAS原子操作

综合性操作例子

迭代所有key(不建议)

Incr/Decr原子递增/原子递减

查看统计信息

保存数据体量较大时压缩

(三) 监视服务器运行状况stats命令详解


(一) 集成前配置

引入依赖

         <!--memcache-->
        <!-- https://mvnrepository.com/artifact/com.googlecode.xmemcached/xmemcached -->
        <dependency>
            <groupId>com.googlecode.xmemcached</groupId>
            <artifactId>xmemcached</artifactId>
            <version>2.4.5</version>
        </dependency>

配置application.yml

spring:
  memcache:
    # 服务地址
    servers: 127.0.0.1:11211
    # 连接数量
    poolSize: 10
    # 操作超时时长
    opTimeout: 5000
    sanitizeKeys: false    # 是否启用url encode机制

自定义properties类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * XMemcached
 * 为了缩短篇幅 , 笔者删减了getter 和 setter 
 * @author HUANG
 */
@Component
// 用于读取配置文件
@ConfigurationProperties(prefix = "spring.memcache")
public class IMemcachedProperties {

    /**
     * memcached服务地址
     */
    private String servers;

    /**
     * nio连接池的数量
     */
    private Integer poolSize;

    /**
     * 设置默认操作超时
     */
    private Long opTimeout;

    /**
     * 是否启用url encode机制
     */
    private Boolean sanitizeKeys;
 
}

自定义Memcached连接配置类

import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.BinaryCommandFactory;
import net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator;
import net.rubyeye.xmemcached.utils.AddrUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;

/**
 * Memcached 配置
 */
@Configuration
public class IMemcachedConfig {

    /**
     * 日志
     */
    private static Logger logger = LoggerFactory.getLogger(IMemcachedConfig.class);

    @Autowired
    private IMemcachedProperties iMemcachedProperties;

    @Bean
    public MemcachedClient getMemcachedClinet() {
        MemcachedClient memcachedClient = null;
        try {
            // 获取连接
            MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(iMemcachedProperties.getServers()));
            // 从1.3版本开始,xmemcached支持failure模式。所谓failure模式是指,当一个memcached节点down掉的时候,发往这个节点的请求将直接失败,而不是发送给下一个有效的memcached节点 , 默认不启用failure模式
            builder.setFailureMode(false);
            builder.setSanitizeKeys(iMemcachedProperties.getSanitizeKeys());
            // 启用连接池 , 设置nio连接池连接数量, Xmemcached是基于java nio的client实现,默认对一个memcached节点只有一个连接,这在通常情况下已经有非常优异的表现。但是在典型的高并发环境下,nio的单连接也会遇到性能瓶颈。因此XMemcached支持设置nio的连接池,允许建立多个连接到同一个memcached节点,但是请注意,这些连接之间是不同步的,因此你的应用需要自己保证数据更新的同步,
            builder.setConnectionPoolSize(iMemcachedProperties.getPoolSize());
            // 设置操作超时时长
            builder.setOpTimeout(iMemcachedProperties.getOpTimeout());
            // 设置连接时长
            builder.setConnectTimeout(3000);
            // 设置数据一致性hash算法
            builder.setSessionLocator(new KetamaMemcachedSessionLocator());
            // 启用二进制协议 Memcached 1.4开始正式启用二进制协议,xmemcached 1.2开始支持二进制协议
            builder.setCommandFactory(new BinaryComma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值