一、为什么要把数据存入内存?
1、原因:快
2、常见的内存数据库
(*)MemCached:看成Redis的前身,严格来说Memcached的不能叫数据库,原因:不支持持久化
(*)Redis:内存数据库,持久化(RDB、AOF)
(*)Oracle TimesTen
(*)SAP HANA

二、MemCached缓存技术
1、基本原理和体系结构

(*) 就是在内存中,维护一张巨大的Hash表
(*) MemCached通过一个路由算法(由客户端决定),来决定数据保存到哪一个节点上

2、安装和配置
(*) 前提1:安装gcc的编译器
(*) 前提2:安装libevent
(1) 确定、删除自带的libevent
rpm -qa|grep libevent =-==> 确定是否已有
rpm -e libevent-2.0.21-4.el7.x86_64 --nodeps (不要删除相关的依赖)

(2) tar -zxvf libevent-2.0.21-stable.tar.gz
(3) 安装到: /root/training/libevent
./configure --prefix=/root/training/libevent
make
make install

(*) 安装MemCached: 官方的版本:memcached-1.4.25.tar.gz
tar -zxvf memcached-1.4.25.tar.gz
安装目录:/root/training/memcached
配置:./configure --prefix=/root/training/memcached --with-libevent=/root/training/libevent
make
make install

(*) 启动:./memcached -u root -d -m 128 -p 11211
./memcached -u root -d -m 128 -p 11212
./memcached -u root -d -m 128 -p 11213(training/me../bin目录)

3、操作MemCached
(1)命令行:telnet (如果mnt下面没有东西,则重新挂载一下光盘)
(*) 安装telnet:rpm -ivh telnet-0.17-64.el7.x86_64.rpm
(*) telnet 127.0.0.1 11211
(*) 插入数据: add/set
set: 如果key已经存在,会替换原来的值
add: 如果key已经存在,返回信息(错误): NOT_STROED

举例:add key1 0 0 4
key1: key-value的键
第一个0:标志位
第二个0:数据过期的时间,0表示永远不过期
4表示:数据的长度
统计信息的命令:
stats
stats items
stats slabs

(2)JAVA API

4、MemCached路由算法

由客户端来决定

(1)求余数路由算法
缺点:如果需要扩容或者有宕机的情况,会造成数据的丢失。
举例: 扩容
3台MemCached ----> 4台MemCached
key
1 1 1
2 2 2
3 0 3
4 1 0
5 2 1
6 0 2
7 1 3
8 2 0
9 0 1
10 1 2

(2)一致性的hash算法

5、MemCached主主复制功能(双机热备)

(1)不能使用官方的版本
一个日本的工程师改写了官方的版本,支持主主复制功能
memcached-1.2.8-repcached-2.2.tar.gz

(2)准备两台:bigdata11 bigdata12
(*) tar -zxvf memcached-1.2.8-repcached-2.2.tar.gz
(*) ./configure --prefix=/root/training/memcached_replication --with-libevent=/root/training/libevent --enable-replication
make
错误:error: ‘IOV_MAX’ undeclared (first use in this function)
vi memcached.c
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 //#if defined(__FreeBSD__) || defined(__APPLE__)
58 # define IOV_MAX 1024
59 //#endif
60 #endif

make install

(3) 启动:需要指定对端的Memcached地址: -x参数
bigdata11: ./memcached -d -u root -m 128 -x bigdata12(/root/training/memcached_replication/bin)
bigdata12: ./memcached -d -u root -m 128 -x bigdata11

错误:
./memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file:
No such file or directory

判断:命令memcached依赖的库有哪些?
ldd memcached
linux-vdso.so.1 => (0x00007ffee936b000)
libevent-2.0.so.5 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007fc26923e000)
/lib64/ld-linux-x86-64.so.2 (0x00005579c379b000)

创建一个连接,让系统的libevent-2.0.so.5 指向我们自己的libevent-2.0.so.5
(64位系统) ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
(32位系统) ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5

telnet退出: ctrl + ]

如果没有telnet 重新挂载一下光盘: mount /dev/cdrom /mnt,去Package目录下执行:rpm -ivh telnet-0.17-64.el7.x86_64.rpm

大数据笔记(二十)——NoSQL数据库之MemCached的更多相关文章

  1. 大数据笔记(十二)——使用MRUnit进行单元测试

    package demo.wc; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.io.IntW ...

  2. 大数据笔记(十五)——Hive的体系结构与安装配置、数据模型

    一.常见的数据分析引擎 Hive:Hive是一个翻译器,一个基于Hadoop之上的数据仓库,把SQL语句翻译成一个  MapReduce程序.可以看成是Hive到MapReduce的映射器. Hive ...

  3. 大数据笔记(十)——Shuffle与MapReduce编程案例(A)

    一.什么是Shuffle yarn-site.xml文件配置的时候有这个参数:yarn.nodemanage.aux-services:mapreduce_shuffle 因为mapreduce程序运 ...

  4. 大数据笔记(十九)——数据采集引擎Sqoop和Flume安装测试详解

    一.Sqoop数据采集引擎 采集关系型数据库中的数据 用在离线计算的应用中 强调:批量 (1)数据交换引擎: RDBMS <---> Sqoop <---> HDFS.HBas ...

  5. 大数据笔记(十八)——Pig的自定义函数

    Pig的自定义函数有三种: 1.自定义过滤函数:相当于where条件 2.自定义运算函数: 3.自定义加载函数:使用load语句加载数据,生成一个bag 默认:一行解析成一个Tuple 需要MR的ja ...

  6. 大数据笔记(十六)——Hive的客户端及自定义函数

    一.Hive的Java客户端 JDBC工具类:JDBCUtils.java package demo.jdbc; import java.sql.DriverManager; import java. ...

  7. 大数据笔记(十四)——HBase的过滤器与Mapreduce

    一. HBase过滤器 1.列值过滤器 2.列名前缀过滤器 3.多个列名前缀过滤器 4.行键过滤器5.组合过滤器 package demo; import javax.swing.RowFilter; ...

  8. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  9. Linux实战教学笔记44:NoSQL数据库开篇之应用指南

    第1章 NoSQL数据库 1.1 NoSQL概述 自关系型数据库诞生40年以来,从理论产生发展到现实产品,例如:大家最常见的MySQL和Oracle,逐渐在数据库领域里上升到了霸主地位,形成每年高达数 ...

  10. 大数据量高并发的数据库优化详解(MSSQL)

    转载自:http://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...

随机推荐

  1. 万万没想到,Spring Boot 竟然这么耗内存!

    Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务. 但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起. ...

  2. MyBatis框架 课程笔记

    MyBatis框架 课程笔记   第1章 MyBatis简介 1.1 MyBatis历史 1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Softw ...

  3. linux中忘记mysql用户root密码解决方案

    1.vim /etc/my.cnf[mysqld]skip-grant-tables ##追加此行,跳过权限表, 2.重启mysqlsystemctl restart mysqld 3.mysql 登 ...

  4. Maven clean install 跳过单元测试

    1.使用MVN命令 mvn clean install -DskipTests 或者 mvn clean install -Dmaven.test.skip=true 2.Eclipse中设置clea ...

  5. 数据库管理利器——Navicat Premium v12.1.25 下载和安装

    目录 1. 按 2. 新功能 3. 安装 4. 激活 5. 下载地址 1. 按 Navicat Premium 是一套数据库管理工具,让你以单一程序同時连接到 MySQL.MariaDB.SQL Se ...

  6. LockSupport详解

    concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS框架借助于两个类: Unsafe(提供CAS操作) LockSupport(提供park/un ...

  7. 前端之JavaScript:JS简单介绍

    JavaScript(JS)之简单介绍 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名Scr ...

  8. Word快捷选取

    在word中,你知道鼠标单击选中一个词,双击选中一行,三击选中一个段落吗?

  9. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  10. NOIP2016 D2T1 组合数问题

    洛谷P2822 数学真重要啊…… 其实解这一题的关键就是组合恒等式:C(n,m)=C(n-1,m)+C(n-1,m-1),然后再知道组合数的矩阵(杨辉三角)和题中n,m的关系就很容易解决了(然而做这题 ...