Memcached安装与使用实例
发布日期:2021-07-01 05:45:59 浏览次数:2 分类:技术文章

本文共 4742 字,大约阅读时间需要 15 分钟。

Memcached简介

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

安装与启动

1.安装Libevent

Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库。安装命令:

yum install libevent libevent-deve
也可使用的源码安装方式。

2.安装memcached

1). wget - 获取最新版

下载的文件名是 latest, rename 一下(mv命令)

2) mv latest memcached-1.5.tar.gz

3) 安装 tar -zxvf memcached-1.5.tar.gz

4)配置: ./configure –prefix=/usr/local/memcached-1.5.7

出现错误: no acceptable C compiler found in $PATH
没有C编译器, 安装一个gcc
yum -y install gcc

5) 编译 , 分别执行以下命令

./configure –prefix=/usr/local/memcached-1.5.7
make && make test
如果这一步出现error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory 的错误,见下面libevent安装。
sudo make install

6)运行

cd /usr/local/memcached-1.5.7
命名行帮助:
bin/memcached -h
启动选项:
-d是启动一个守护进程;
-m是分配给Memcache使用的内存数量,单位是MB;
-u是运行Memcache的用户;
-l是监听的服务器IP地址,可以有多个地址;
-p是设置Memcache监听的端口,,最好是1024以上的端口;
-c是最大运行的并发连接数,默认是1024;
-P是设置保存Memcache的pid文件
作为后台服务程序运行:
bin/memcached -p 11211 -m 64m -d
或者
bin/memcached -d -m 64M -u root -l xx.xx.xx.xx -p 11211 -c 256 -P /tmp/memcached.pid

至此,安装启动完成.

libevent安装

查看是否安装 libevent

ls -al /usr/lib | grep libevent

wget

tar -zxvf libevent-2.1.8-stable.tar.gz
./configure –prefix=/usr
sudo make
sudo make install

libevent会安装到 /usr/lib 或 /usr/local/lib 下

测试libevent是否安装成功:ls -al /usr/lib | grep libevent(或 ls -al /usr/local/lib | grep libevent)

如果libevent的安装目录为/usr/local/lib下,则还需要建立 libevent-2.0.so.6 到 /usr/lib 的软连接,这样其他程序运行时才能找到libevent库:

ln -s /usr/local/lib/libevent-2.0.so.6 /usr/lib/libevent-2.0.so.6

移除:

rpm -e libevent –nodeps

安装问题解决

es: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory

原因是:已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.
1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令
2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它”非/lib或/usr/lib”目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:

cat /etc/ld.so.conf

include ld.so.conf.d/*.conf
echo “/usr/local/lib” >> /etc/ld.so.conf
ldconfig
3) 如果共享库文件安装到了其它”非/lib或/usr/lib” 目录下, 但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.
LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

命令端连接与使用

可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。

  1. telnet HOST PORT - 连接
  2. set foo 0 0 3 - 保存命令
  3. bar - 数据
  4. get foo - 取得命令
  5. quit - 退出

看不懂上面的部门, 没关系, 接下来介绍Memcached 命令

存储命令
1. set 命令
用于将 value(数据值) 存储在指定的 key(键) 中。
如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

set key flags exptime bytes [noreply]

value

参数说明如下:
key:键值 key-value 结构中的 key,用于查找缓存值。
flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes:在缓存中存储的字节数
noreply(可选): 该参数告知服务器不需要返回数据
value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

输出信息说明:

STORED:保存成功后输出。
ERROR:在保存失败后输出。

  1. add 命令
    Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
    如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应

add key flags exptime bytes [noreply]

value

  1. replace 命令
    Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
    如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
    replace key flags exptime bytes [noreply]

value

  1. append命令
    Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据
    append key flags exptime bytes [noreply]

value

  1. prepend命令
    Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。
    prepend key flags exptime bytes [noreply]

value

  1. CAS命令
    Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个”检查并设置”的操作
    它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
    检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。
    cas key flags exptime bytes unique_cas_token [noreply]
    v
    value

Java连接获取值

jar档地址:

如果是使用maven的话, 直接在pom.xml中添加 dependency 是无法下载的。

把下载的jar copy 到 D:\temp目录

mvn install:install-file -DgroupId=spy -DartifactId=memcached -Dversion=2.10.3 -Dpackaging=jar -Dfile=D:\temp\spymemcached-2.10.3.jar

再到pom.xml 添加以下部分:

spy
memcached
2.10.3

好了, 开始测试代码了

/** * @Title: MemcachedTest.java * @Package com.oscar999 * @Description: TODO * @author oscar999 * @date May 7, 2018 3:10:19 PM * @version V1.0 */package com.oscar999;import java.io.IOException;import java.net.InetSocketAddress;import org.junit.Test;import net.spy.memcached.MemcachedClient;/** * @ClassName: MemcachedTest * @Description: TODO * @author oscar999 */public class MemcachedTest {
@Test public void test() throws IOException { MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("172.21.145.77", 11211)); System.out.println("Connection to server sucessful."); String s = (String) mcc.get("foo"); System.out.println("foo in cache=" + s); mcc.shutdown(); }}

连接服务器, 并获取foo的值。

转载地址:https://oscar.blog.csdn.net/article/details/80575978 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Exception from HRESULT: 0x80004004 (E_ABORT) 的错误
下一篇:Eclipse 好用常用插件集合

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年05月04日 01时41分47秒