基于内存的分布式NoSQL数据库Redis
知识点01:课程目标
- 整体目标
- Redis:NoSQL数据库,实时存储
- Kafka:消息队列,实时存储
- Hbase:NoSQL数据库,实时存储
- Redis的基本介绍和使用
- 功能与应用场景
- Redis的使用:基于命令的操作、基于编程的操作【JavaAPI】
- 多练习
- Redis的存储设计:性能、安全
- 思想:大道至简
知识点02:NoSQL与RDBMS
- 目标:了解NoSQL的应用场景与RDBMS的区别
- 路径
- step1:RDBMS的特点
- step2:业务架构中的问题
- step3:NoSQL的特点
- 实施
- RDBMS的特点:关系型数据库管理系统
- 工具:MySQL、Oracle、SQL Server……
- 应用:业务性数据存储系统:事务和稳定性
- 特点:体现数据之间的关系,支持事务,保证业务完整性和稳定性,小数据量的性能也比较好
- 开发:SQL
- 业务架构中的问题
- 问题:以网站后台存储为例,当并发量很大,所有高并发全部直接请求MySQL,容易导致MySQL奔溃
- 需求:能实现高并发的数据库,接受高并发请求
- NoSQL的特点:Not Only SQL:非关系型数据库
- 工具:Redis、HBASE、MongoDB……
- 应用:一般用于高并发高性能场景下的数据缓存或者数据库存储
- 特点:读写速度特别快,并发量非常高,相对而言不如RDBMS稳定,对事务性的支持不太友好
- 开发:每种NoSQL都有自己的命令语法
- 解决上面RDBMS的问题:使用高并发缓存实现读写分离
- 读请求:读请求不读取MySQL,读取Redis
- 写请求:写请求直接写入MySQL
- 小结
- RDBMS和NoSQL的应用特点分别是什么?
- RDBMS
- 场景:业务数据库
- 特点:稳定性高、事务支持比较完善、小数据量性能好
- NoSQL
- 场景:高并发高性能的数据存储
- 特点:稳定性和安全性相对不如RDBMS,支持高并发和高性能
知识点03:Redis的功能与应用场景
- 目标:掌握Redis的功能与应用场景
- 路径
- step1:介绍
- step2:功能特点
- step3:应用场景
- 实施
- 介绍
- 相关网站
- 官方网站:https://redis.io/、http://download.redis.io/releases/
- 中文文档:http://www.redis.cn/
- Redis 命令参考:http://redisdoc.com/
- 官方介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
- 定义:基于内存的分布式的NoSQL数据库
- 所有数据存储在内存中,并且有持久化机制
- 每次redis重启,会从文件中重新加载数据到内存,所有读写都只基于内存
- 功能特点
- 功能:提供高性能高并发的数据存储
- 特点
- 基于C语言开发的系统,与硬件的交互性能更好
- 基于内存实现数据读写,读写性能更快
- 分布式的:扩展性和稳定性更好
- KV结构数据库:支持事务、拥有各种丰富的数据结构
- KV结构
- 缺点:两列,不能满足复杂的业务存储
- 优点:Value可以支持多种类型,满足不同需求的存储
- String、List、Set、Hash、Zset:掌握这五种类型的读写命令
- 应用场景
- 缓存:用于实现大数据量高并发的大数据量缓存【临时性存储】
- 网站架构中:接受高并发的缓存读写请求
- 数据库:用于实现高性能的小数据量读写【永久性存储】
- 大数据平台中:高性能:一般用于作为实时计算结果的存储
- 消息中间件:消息队列【MQ】:用于实现消息传递,一般不用Redis
- 小结
- Redis的功能与应用场景是什么?
- 功能:实现基于高性能和高并发的数据存储【基于内存】
- 应用
- 缓存:高并发来接受高并发的读写,大数据量,临时性存储,允许数据丢失
- 数据库:高性能来接受数据的读写,小数据量,永久性存储,不允许数据丢失
知识点04:Redis的Linux版单机部署
- 目标:实现Redis的Linux版单机部署
- 实施
- Windows版本安装及远程工具使用请参考随堂资料《Redis的Windows版安装及远程工具的使用.pdf》
- 上传redis-3.2.8源码
cd /export/software/ rz
- 解压
tar -zxvf redis-3.2.8.tar.gz -C /export/server/
- 安装依赖
yum -y install gcc-c++ tcl
- 如果已经安装过,执行命令结果如下:
- 编译安装
#进入源码目录 cd /export/server/redis-3.2.8/ #编译 make #安装,并指定安装目录 make PREFIX=/export/server/redis-3.2.8-bin install
- 修改配置
- 复制配置文件
cp /export/server/redis-3.2.8/redis.conf /export/server/redis-3.2.8-bin/
- 创建目录
#redis日志目录 mkdir -p /export/server/redis-3.2.8-bin/logs #redis数据目录 mkdir -p /export/server/redis-3.2.8-bin/datas
- 修改配置
cd /export/server/redis-3.2.8-bin/ vim redis.conf
## 61行,配置redis服务器接受链接的网卡 bind node1 ## 128行,redis是否后台运行,设置为yes daemonize yes ## 163行,设置redis服务日志存储路径 logfile "/export/server/redis-3.2.8-bin/logs/redis.log" ## 247行,设置redis持久化数据存储目录 dir /export/server/redis-3.2.8-bin/datas/
- 创建软连接
cd /export/server ln -s redis-3.2.8-bin redis
- 配置环境变量
vim /etc/profile
# REDIS HOME export REDIS_HOME=/export/server/redis export PATH=:$PATH:$REDIS_HOME/bin
source /etc/profile
- 启动
- 端口:6379
- 启动服务端
- 启动命令
/export/server/redis/bin/redis-server /export/server/redis/redis.conf
- 启动脚本
vim /export/server/redis/bin/redis-start.sh
#!/bin/bash REDIS_HOME=/export/server/redis ${REDIS_HOME}/bin/redis-server ${REDIS_HOME}/redis.conf
chmod u+x /export/server/redis/bin/redis-start.sh
- 启动客户端
/export/server/redis/bin/redis-cli -h node1 -p 6379
- 关闭客户端
- exit:退出客户端
- 关闭服务端
- 方式一:客户端中
shutdown
- 方式二:Linux命令行
kill -9 redis的pid
- 方式三:通过客户端命令进行关闭
bin/redis-cli -h node1 -p 6379 shutdown
- 测试
node1:6379> keys * (empty list or set) node1:6379> set s1 hadoop OK node1:6379> keys * 1) "s1" node1:6379> get s1 "hadoop" node1:6379>
- 远程工具的使用:参考Windows安装文档
- 小结
- 实现Redis的Linux版单机部署