1、NoSQL数据库:Redis基于内存NoSQL数据库
前身是MemCached
2、大数据的实时计算:Apache Storm
集成Storm和Redis
一、为什么要把数据存入内存?
1、原因:快
2、举例:在B/S如何从架构的角度上,提高性能
3、常见的内存数据库
(*)MemCached:严格来说,不是数据库,只能叫缓存,因为不支持持久化
(*)Redis:支持持久化(RDB、AOF)
(*)Oracle TimesTen
(*)SAP HANA
二、MemCached
1、体系架构和基本原理
(*) 就是在内存中,维护一张巨大Hash表,基于<key value>
(*) 由客户端实现路由算法,来决定数据到底保存到哪一个MemCached实例
(*)补充:路由功能(负载均衡) 有两种方式
(1)由服务器端实现 :nginx
(2)由客户端实现:MemCached,Spring Cloud(微服务)
(*)需要有gcc的编译器
(*)安装libevent
(1) 确定是否已经安装?
rpm -qa|grep libevent
libevent-2.0.21-4.el7.x86_64 ----> 已经装好
删除原来的
rpm -e libevent-2.0.21-4.el7.x86_64 --nodeps (不要删除依赖库)
(2) 安装Libevent
tar -zxvf libevent-2.0.21-stable.tar.gz
安装到 /root/training/libevent
./configure --prefix=/root/training/libevent
make
make install
(*)安装MemCached
tar -zxvf memcached-1.4.25.tar.gz
./configure --prefix=/root/training/memcached --with-libevent=/root/training/libevent
make
make install
(*)启动
bin/memcached -u root -d -m 128 ----> 默认端口:11211
bin/memcached -u root -d -m 128 -p 11212
bin/memcached -u root -d -m 128 -p 11213
3、操作MemCached
(1) 命令行:MemCached没有命令行工具
使用telnet作为MemCached命令行
(*)安装telnet工具
挂载光盘 mount /dev/cdrom /mnt
rpm -ivh telnet-0.17-64.el7.x86_64.rpm
(*)连接MemCached
telnet 127.0.0.1 11211
(*)插入数据 set、add
set:如果key存在,用新值替换原来的值
add:如果key存在,出错
举例:set key1 0 0 4
第一个0:标志位
第二个0:数据过期的时间,0表示永远不过期
4表示:插入数据的长度
统计信息的命令:
stats
stats items
stats slabs
退出telnet:ctrl + ]
quit
(2) Java
4、MemCached路由算法:由客户端实现
MemCached路由算法:由客户端实现分布式存储
类似:Redis中的Cluster(分布式存储)----> 由服务端实现
(1)求余数
缺点:如果需要扩容或者有宕机的情况,数据的丢失会比较严重
举例:
数据:1 2 3 4 5 6 7 8 9 10
三台MemCached 1 2 0 1 2 0 1 2 0 1
扩容:4台 1 2 3 0 1 2 3 0 1 2
(2)一致性Hash算法 -------> 类似Redis
在一定程度上,解决求余数的路由算法的缺点
扩容或者有宕机的情况,把数据的丢失减少到最小
参考讲义:P6页
5、MemCached主主复制:日本工程师改写
tar -zxvf memcached-1.2.8-repcached-2.2.tar.gz
./configure --prefix=/root/training/memcached_replication --with-libevent=/root/training/libevent --enable-replication
参考讲义P8
建立软连接
32位:ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
64位:ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
注意:停止原来在11211上的memcached
三、Redis
1、Redis简介和特点
(*) 前身:MemCached
(*) 区别:支持持久化:RBD、AOF
丰富的数据类型
2、安装配置Redis:需要gcc
tar -zxvf redis-3.0.5.tar.gz
make
make PREFIX=/root/training/redis install
命令脚本
redis-benchmark 压力测试工具(测试AOF日志重写会用到)
redis-check-aof 检查AOF日志文件
redis-check-dump 检查RDB快照文件
redis-cli 客户端
redis-sentinel 哨兵,实现主从复制的HA(版本:2.4+)
redis-server 启动和停止Redis Server
核心的配置文件:需要从源码中拷贝
cp ~/tools/redis-3.0.5/redis.conf conf/
参数
daemonize no 是否以后台运行的方式启动Redis,建议yes
port 6379 端口号
启动
bin/redis-server conf/redis.conf
[root@bigdata111 redis]# bin/redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf --sentinel
bin/redis-cli --help