课程简介 #
NoSQL数据库简介、Redis概述与安装、常用五大数据结构、配置文件详解、发布与订阅、Redis6新数据类型、Redis与spring boot整合、事务操作、持久化之RDB、持久化之AOF、主从复制及集群、Redis6应用问题(缓存穿透、击穿、雪崩以及分布式锁)、Redis6新增功能
NoSQL数据库简介 #
- Redis属于NoSQL数据库
- 技术分为三大类
- 解决功能性问题:Java、Jsp、RDBMS、Tomcat、Linux、JDBC、SVN
- 解决扩展性问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
- 解决性能问题:NoSQL、Java线程、Nginx、MQ、ElasticSearch
- 缓存数据库的好处
- 完全在内存中,速度快,结构简单
- 作为缓存数据库:减少io的读操作
- NoSQL=Not Only SQL,不仅仅是SQL,泛指非泛型数据库
- 不支持ACID(但是NoSQL支持事务)
- 选超于SQL的性能
- NoSQL适用场景
- 对数据高并发的读写
- 海量数据的读写
- 对数据高可扩展性
- NoSQL不适用的场景
- 需要事务支持
- 基于sql的结构化查询存储
- 多种NoSQL数据库介绍
- Memcache 不支持持久化,数据类型单一,一般作为辅助持久化的数据库
- Redis 支持持久化,除了k-v模式还有其他多种数据结构,一般作为辅助持久化的数据库
- MongoDB,是文档型数据类型;k-v模型,但是对value提供了丰富的查询功能;支持二进制数据及大型对象;替代RDBMS,成为独立数据库
- 大数据时代(行式数据库、列式数据库)
- 行式数据库
查询某一块数据的时候效率高 - 列式数据库
查询某一列统计信息快 - 其他
Hbase,Cassandra,图关系数据库(比如社会关系,公共交通网等)
- 行式数据库
- 小计
NoSQL数据库是为提高性能而产生的非关系型数据库
Redis概述与安装 #
- 简单概述
- Redis是一个开源的kv存储系统
- 相比Mencached,支持存储的数据类型更多,包括string,list,set,zset以及hash,这些类型都支持(pop、add/remove及取交并集和差集等),操作都是原子性的
- Redis数据都是缓存在内存中
- Redis会周期性地把数据写入磁盘或修改操作写入追加的记录文件
- 能在此基础上实现master-slave(主从)同步
- Redis功能
- 配合关系型数据库做高速缓存
- Redis具有多样的数据结构存储持久化数据
- 其他部分功能
- Redis安装
- 从官网中下载redis-6.xx.tar.gz包(该教程在linux中使用redis6教学)
- 编译redis需要gcc环境
- 使用gcc –version查看服务器是否有gcc环境
- 如果没有需要进行安装
apt install -y gcc 或者 yum install -y gcc
- 将redis压缩文件进行解压
tar -zxvf redis-6xx.tar.gz
- 进入解压后的文件夹,并使用make命令进行编译
make
- 如果报错了,需要先用下面命令清理,之后再进行编译
make distclean
- 安装redis
make install
- 进入/usr/local/bin目录,查看目录
- Redis启动
- 前台启动
redis-server
- 后台启动
- 在刚才解压的文件夹中,拷贝出redis.conf文件(这里拷贝到/etc/目录下)
cp redis.conf /etc/redis.conf
- 到etc中修改redis.conf文件
将no改为yes并保存vim /etc/redis.conf # 进入编辑器后使用下面命令进行搜索并回车 /daemonize no
- 在刚才解压的文件夹中,拷贝出redis.conf文件(这里拷贝到/etc/目录下)
- 进入/usr/local/bin目录启动redis
redis-server /etc/redis.conf
- 查看进程,发现redis已经启动
ps -ef | grep redis
- 使用redis-cli 客户端连接redis
redis-cli keys *
- 前台启动
相关知识 #
- Redis6379的由来
- 人名Merz 在九宫格对应的数字就是6379
- 人名Merz 在九宫格对应的数字就是6379
- Redis默认有15个库,默认数据都在数据库0中,所有库的密码都是相同的
- Redis是单线程+多路复用技术
- Redis是串行操作
- 火车站的例子
当1,2,3没有票的时候,不用一直等待买票,可以继续做自己的事情,黄牛买到票就会通知123进行取票
- Redis是串行操作
- Memcached和Redis区别
- Memcached支持单一数据类型,Redis支持多数据类型
- Memcached不支持持久化
- Memcached用的多线程+锁的机制,Redis用的是单线程+多路复用程序