
(二)关系型数据库补充:
- 秒>毫秒>微秒>纳秒 磁盘比内存在寻址上慢了10W倍
- 数据在磁盘和内存中,体积不一样(2G在内存可能1.9G)
如上图所示:
1页:等同于操作系统读取大小,避免浪费(data page 4k)
索引:等同于1页(data page 4k)
注意: 数据和索引都是存储在硬盘,查询时会在内存中准备一个B+Tree
特点:
关系型数据库建表时,必须给出schema(架构)
之所给出schema是因为,这样当插入的时候,如果这行数据有列为null值,会进行占位,当更改数据时,直接在这一列中进行插入即可,避免了空间上的转换
类型:字节宽度
存:倾向于行级存储
二、Redis (一)简介问题引入:
数据库表很大,性能下降?->表中加索引->增删改变慢->查询速度怎么样?
- 1个或少量查询依然很快
- 并发大的时候会受磁盘带宽影响速度
所以诞生了内存级别的关系型数据库SAP,HANA,但是如果数据库宕机了那么数据不能保证安全.
最后综合上述,进行折中缓存,从而出现了memcached,redis这样的数据库
注意:
该数据库都依赖于两个基础设施,分别为:
- 冯诺依曼体系的硬件
- 以太网,tcp/ip网络
扩展:
- 数据库引擎学习:https://db-engines.com/en/
- redis中文翻译手册:http://redis.cn/
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)。
当我们学习到redis是value有类型的时候,我们应该想到:
设想如果没有redis之前,value没有类型的概念,那么应该用什么来表示复杂的数据类型呢?
使用json来表示,如下图所示.
(二)安装实操如果客户端想要从缓存中取出value值
- memchahce ->返回的所有数据到client需要走网卡IO,且client需要实现代码来解码
- redis->对客户端来说类型不重要,redis的server对每种类型有自己的方法,用户只需直接调用方法,这样会轻盈很多,本质是解耦(也就是计算向数据移动)
计算向数据移动 https://www.cnblogs.com/blog-of-zxf/p/10827941.html
安装环境
1. yum install wget 2. cd 3. mkdir soft 4. cd soft 5. wget http://download.redis.io/releases/redis-5.0.5.tar.gz 6. tar xf redis...tar.gz 7. cd redis-src 8. 看README.md(重点,通过它可以自主学习,各种步骤都里面) 9. make ....yum install gcc .... make distclean 10. make 11. cd src ....生成了可执行程序 12. cd .. 13. make install PREFIX=/opt/mashibing/redis5(将执行脚本安装到指定路径) 14. vi /etc/profile(配置Redis全局环境) ... export REDIS_HOME=/opt/mashibing/redis5 ... export PATH=$PATH:$REDIS_HOME/bin ... source /etc/profile 15. cd utils 16. /install_server.sh (可以执行一次或多次) 从安装的过程我们可以得到如下结论: a) 一个物理机中可以有多个redis实例(进程),通过port区分 b) 可执行程序就一份在目录,但是内存中未来的多个实例需要各自的配置文件,持久化目录等资源 c) 执行该命令之后会在linux的目录 > /etc/init.d/**** 下放了一个脚本 redis_6379 启动刚才设置的redis服务:service redis_6379 start/stop/status d) 脚本还会帮你启动! 17. ps -fe | grep redis 总结: 1.下载wget下载工具 2.添加要安装的文件夹 3.通过wget在线下载对应的gz包 4.解压gz包到对应的文件夹 5.在解压的包中的src中查看README.md(重点:通过README.md文件知道后面的安装步骤) 6.执行make命令 如果报错提示差gcc环境,则下载gcc环境,并清理原先make的数据 make distclean 7.重新执行make命令 8.将执行脚本安装到指定路径 9.配置redis全局变量 10.安装redis服务端(生成在/etc/init.d/中设置的对应脚本,安装完后会自动启动) 11.通过service redis_6379 start/stop/status(启动,终止,查看状态) 12.通过 ps -fe | grep redis 查看redis进程