Memcached介绍与使用

memcached介绍 Memcached(读作:mem-cash-dee)是一个高性能的分布式内存对象缓存系统。它通常用于减轻数据库压力,提高动态网站的速度和性能。Memcached是一个开源项目,最早由Brad Fitzpatrick创建并于2003年发布。它基于分布式哈希表,用于存储键值对数据。它的设计目标是提供快速的读写操作,以及高可扩展性和可靠性。Memcached的工作原理很简单:它维护了一个内存缓存池,用于存储数据。当客户端请求数据时,Memcached首先检查缓存池中是否存在该数据,如果存在则直接返回给客户端。 阅读详情

Memcached介绍与使用

Memcached是什么?

Memcached是一个免费开源的、高性能的、分布式内存对象缓存系统。

Memcached是一个基于内存的键值对储存系统,用于储存小型的任意数据(字符串、对象),比如数据库查询、API调用以及页面渲染的结果。

它由什么组成的?

  • 客户端软件,给出可用的Memcached服务器列表
  • 一个基于客户端的哈希算法,用于基于“键”选择合适的服务器
  • 服务端软件,在一个内部的哈希表中储存键值对数据
  • 最近最少使用算法(LRU),决定何时丢弃旧数据(当内存不足)

各类储存方案对比

在这里插入图片描述

Memcached工作流程

在这里插入图片描述

  1. 客户端向Memcached服务器发送请求,如果缓存中有需要的数据,直接返回。
  2. 如果没有需要的数据,那么就查询数据库,在给客户端返回数据的同时,把该数据存到Memcached中。
  3. 一旦数据发生变化(数据的修改和删除),就要实时更新缓存内的数据。

Memcached与Redis比较

memcache、redis原理对比

Memcached命令

Memcached set 命令

Spring Boot 集成 Memcached

安装Memcached

Linux:

  • 安装libevent库

sudo apt-get install libevent ibevent-dev (Ubuntu/Debian)

yum install libevent libevent-devel (Redhat/Fedora/Centos)

  • 安装Memcached

sudo apt-get install memcached (Ubuntu/Debian)

yum install memcached (Redhat/Fedora/Centos)

portmaster databases/memcached (FreeBSD)

Windows:

Memcached在1.4.5版本之前可以作为一个服务安装,但在之后就取消了这个功能。所以安装方法分两块。

1.4.5之前版本安装

使用管理员运行以下命令:

f:\memcached.exe -d install (路径视你的存放路径而定)

打开和关闭Memcached服务:

f:\memcached.exe -d start (路径视你的存放路径而定)

f:\memcached.exe -d stop (路径视你的存放路径而定)

如要修改配置,打开regedit.exe,找到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached"进行修改。

1.4.5之后版本安装

通过创建计划任务来进行设置Memcached的windows启动时自执行:

管理员身份执行:

schtasks /create /sc onstart /tn memcached /tr “c:\memcached.exe”

删除计划任务:

schtasks /delete /tn memcached

注意:一定要先把Memcached服务成功打开,下面的程序才能跑通。

导包

Memcached没有为Spring Boot开发集成包,所以需要自行引入。

这里使用Spymemcached。

github : https://github.com/couchbase/spymemcached

Maven:

https://mvnrepository.com/artifact/net.spy/spymemcached

<dependency>
    <groupId>net.spy</groupId>
    <artifactId>spymemcached</artifactId>
    <version>2.12.3</version>
</dependency>

程序中使用

创建一个Runner继承CommandLineRunner,并在其中初始化Memcached服务,这样就可以在Spring容器成功启动之后,第一时间创建可用的Memcached服务。

package com.lbl.spymemcacheddemo;

import net.spy.memcached.MemcachedClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.net.InetSocketAddress;

@Component
public class MyRunner implements CommandLineRunner {

    private MemcachedClient memcachedClient = null;

    @Override
    public void run(String... args) throws Exception {
        try {
            memcachedClient = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public MemcachedClient getMemcachedClient() {
        return memcachedClient;
    }
}

创建测试:

package com.lbl.spymemcacheddemo;

import net.spy.memcached.MemcachedClient;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

import static org.junit.jupiter.api.Assertions.*;
@RunWith(SpringRunner.class)
@SpringBootTest
class MyRunnerTest {

    @Resource
    private MyRunner myRunner;

    @Test
    public void Test() {
        MemcachedClient client = myRunner.getMemcachedClient();
        client.set("test",100,"123456");
        System.out.println("test is "+client.get("testkey").toString());
    }

}

其它遇到的坑

@RunWith注解爆红

检查pom.xml文件,发现这一个:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
</dependency>

改为这样:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
</dependency>

其它方法:

Springboot测试类之@RunWith注解

CommandLineRunner或者ApplicationRunner接口介绍

CommandLineRunner或者ApplicationRunner接口

nosql介绍、memrcached介绍、安装memcached、查看memcached状态、memcached命令行及其用法 21.1 nosql介绍 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗费时间和资源,尤其是数据是需要从磁盘里去检索 NoSQL数据库存储原理非常简单(典型的数据类型为k-v),不存在繁杂的关系链,比如mysql查询的时候,需要找到对应的库、表(通常是多个表)以及字... 阅读详情

相关推荐

缓存memcached下载(目前最稳定的版本)

缓存memcached下载 是目前最稳定的版本

Maven项目集合Memcached框架

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33755554的博客 180

memcached-1.5.6 官方版本

Memcached 1.5.6 已发布,这是一个 bug 修复版本。同时,由于前段时间因被曝出有攻击者通过设置 memcached 的最大值,欺骗 UDP 数据包发起请求,利用 Memcached 发送的大量庞大的 UDP 响应数据包进行一些攻击行为,该版本已默认禁用 UDP 协议。

memcached 在maven项目中使用

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 今天在整理系统的时候 发现我的me

u010800970的专栏 8238

restbed编译笔记

Restbed 可以构建出基于asio库的restfulAPI服务,Restbed 4.7版本使用了1.12.0版本的asio(其他版本编译不通过),可直接访问github下载:https://github.com/chriskohlhoff/asio/tree/asio-1-12-0。另外Restbed还依赖openssl库(可直接下载exe的安装包,安装后取出lib库及头文件放到到restbed\dependency\openssl中即可,https://slproweb.com/download/W.

mahong100的博客 2106

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 280

Memcached基础知识

主要内容:   Memcached基本的工作原理   Memcached的两阶段哈希   Memcached的数据存储方式   Memcached新建Item分配内存过程   Memcached的数据过期方式   Memcached与Spring集成 ------------------------------------------------------------------------------------------ Memcached基本的工作原理   Memcached是以

lgxzzz的博客 298

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

maven配置Memcached

摘要: Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 还在继续使用我的maven来整理系

剑雪封喉 936

STM32测测速---编码电机读取速度的计算

速度计算:轮胎每转一圈的脉冲数取决于编码器的分辨率,可由下面公式进行计算:PPR是电机的线数最后可以计算轮胎每转一圈的脉冲数为:轮胎每转一圈的脉冲数 = 9.6 × 11 × 4 = 422.4最后的速度公式简化为:速度 = (0.01 秒内产生的脉冲数 ∗ 0.055 ∗ π )/(0.01 ∗422.4​。

weixin_69414084的博客 3811

复数值神经网络可能是深度学习的未来

复数这种东西,在人的头脑中似乎抽象、似乎复杂,然而,对于计算机来说,一点也不抽象,不复杂,那么,将复数概念推广到神经网络会是什么结果呢?本篇介绍国外的一些同行的尝试实践,请我们注意观察他们的进展。

gongdiwudu的专栏 6613

Memcached简单介绍

memcached 是一套分布式的高速缓存系统 由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。 memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。 memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在

狮子王的专栏 712

9.20华为OD机试真题 新系统 - 简单URL 路径提取器 (Java/Py/C/C++/Js/Go)

9.20华为OD机试真题 新系统 - 简单URL 路径提取器 (Java/Py/C/C++/Js/Go)

算法大师! 339

Memcached介绍

Memcached介绍本文介绍memcached基本的使用和理解: Memcached是什么 Memcached的作用 怎样理解Memcached Memcached的使用场景 项目中使用Memcached 项目中使用Memcached注意事项 Memcached是什么: Memcached是一套分布式缓存系统。分布式表示你可以在多台服务器上安装memcached服务。达到集群效果。 高速,memc

在路上 1万+

手把手完整实现STM32+NB-IoT+MQTT+ThingsCloud云平台+手机APP(Android或iOS)及微信小程序及Web app 应用

本教程以远程温湿度显示及点灯作为示例。最终效果实现本地OLED显示屏、云平台和手机APP、微信小程序和Web App可远程查看温湿度数据,并可远程控制LED灯亮灭。以此完成基于MQTT协议的NB-IoT远程发布订阅数据,以此在本教程基础上可扩展开发更多的功能。

嵌入式阿齐Archie 2万+

RK3588 ENV 环境配置之 fw_printenv

RK3588 ENV环境配置指南 本文详细介绍了在RK3588平台上配置ENV环境变量的完整流程。首先需要在parameter分区表中划分env分区,然后在U-Boot中配置MMC偏移地址。接着编译fw_printenv工具并部署到目标设备,配置fw_env.config文件指定存储位置。重点解决了内核中读写ENV时遇到的CRC校验问题,通过U-Boot的saveenv命令初始化环境变量存储区域。最后展示了如何使用fw_printenv/fw_setenv工具在内核中读写ENV变量,并建议将配置集成到根文件

501846585_QQAndroid_java 1031

memcached 简单介绍

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33872660的博客 138

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Memcached 介绍与使用指南

Memcached 是一个开源的、高性能的、分布式的内存对象缓存系统,它通过减少数据库负载来加速动态Web应用。Memcached通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高数据访问速度。它特别适用于那些读多写少、对数据一致性要求不高的应用场景。memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。

Xiaoxin的博客 1546

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Memcached介绍及简单的使用

Memcached介绍及简单的使用

2542

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Memcached介绍和详解

入门学习Memcached,你可以遵循以下步骤来了解其基本概念、安装配置、基本操作以及如何在你的应用程序中使用它

wangbo_angel的博客 1835

Memcached缓存介绍

Memcached简介 Memcached是一个高性能的服务器内存缓存软件。在早期版本的Memcached使用的是alloc来分配内存,存在内存碎片,在新版本的Memcached采用了Slab Allocator来分配内存。在MC启动时会要求制定一块内存区域,然后会划分为多个Slab,每个Slab默认大小为1M,可以指定。每个Slab又包含多个truck,每个Slab的truck大小不同,但同一个...

Donny的专栏 2786

NoSQL介绍,memcached介绍,memcached安装,memcached的状态,php连接memcached,memcached存储session

NoSQL介绍 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗费时间和资源,尤其是数据是需要从磁盘里去检索 NoSQL数据库存储原理非常简单(典型的数据类型为k-v),不存在繁杂的关系链,比如mysql查询的时候,需要找到对应的库、表(通常是多个表)以及字段。...

aoli_shuai的博客 297

Memcached 介绍及部署

目录Memcached 简介MC介绍MC特性MC企业应用场景MC数据存储机制MC内存管理机制MC过期机制Memcached 部署MC安装MC服务基本管理MC基本操作memcached 是一个自由开源,高性能,分布式内存对象存储系统基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)它是一个简洁的key-value存储系统f分为服务端和客户端两部分1.服务端:memcached2.客户端:memcache。

w2304948626的博客 1344
上一篇: 《现代操作系统》笔记 第二章(1) 进程
下一篇: 微服务设计 第一章 笔记
子夕听雨
博客等级 码龄9年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值