一、为什么要把数据存入内存?
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

最新文章

  1. 调用WCF Client客户端测试
  2. TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
  3. Android开发-API指南-系统权限
  4. POJ 2421 Constructing Roads (最小生成树)
  5. Kinetic使用注意点--layer
  6. mysql 5.7占用400M内存优化方案
  7. SCALA STEP BY STEP
  8. MySQL插入数据时插入无效的列
  9. 内核调试工具 — kdump & crash
  10. qml demo分析(maskedmousearea-异形窗口)
  11. angular.uppercase()
  12. 阿里云mysql安装配置(CentOS 7.3 64)
  13. Android Studio将引用第三方jar包的library打包成jar包
  14. JAVA JVM常见内存参数配置简析
  15. iOS application/json上传文件等
  16. Machine Schedule POJ - 1325(水归类建边)
  17. python网络爬虫笔记(六)
  18. QT编译错误: multiple definition of `qMain(int, char**)'
  19. MVC输出字符串常用四个方式
  20. linux查看Raid磁盘阵列信息

热门文章

  1. base64 换表 解密脚本
  2. 秒懂Vuejs、Angular、React原理和前端发展历史
  3. T-聊天止于呵呵
  4. 计算机系统结构总结_Multiprocessor & cache coherence
  5. mvvm实现一个简单的vue
  6. Springboot 打jar包项目无法访问jsp问题解决方案
  7. 分岔 Bifurcations
  8. libboost_regex 备份用时
  9. 微信小程序中两种回到顶部按钮的效果实现
  10. [人工智能]IBM Watson人工智能API|一步步创建智能微信翻译官|第一章