1.为什么有redis?
问题1:文件放在硬盘中,如果文件越大,相应的查询时间也就会越久。
主要的原因是因为IO全量扫描造成的时间更长(grep awk)
但是在数据库中的查询时间更短,主要是因为在数据库中进行了数据分治,将存储空间设置成多个datapage,并且在数据库中可以构建索引,然后做成B+树,将树干存放于内存中。
马士兵老师总结了一个道理,计算机在进步的过程中,就是在对抗全量IO的过程。
问题2:如果数据库中表很大,有很多行,增删改查会变慢?对不对?
那么我们将这个问题拆开看的话,就是说将增删改查,看成读和写;写一定会变慢,因为写会涉及到索引的调整;那么读就不一定会变慢
如果只有一个客户端在进行一个简单的查询,那么如果索引名中,其实也就两个4K的datapage的查询,所以查询结果也就是毫秒级的
如果并发很大,每个人都命中索引,且读取的数据不一样,那么硬盘的吞吐量就会影响到查询效果。
所以这里就引出了redis memcache等技术
在所有的数据中,只有一部分的热数据会频繁使用,放在内存中,不频繁访问的放在硬盘中。
在数据库中,分为关系型数据库和非关系型数据库;
mysql HANA等支持sql的复杂查询,而redis的技术nosql,常见的key-value;在关系型数据库中,常用词:约束,范式,冗余等!
那非关系型数据库,做成nosql的,主要防止有约束存在,一张表在内存,一张表在硬盘中的情况产生。
在memCache中,只有一个String类型,如果想取回下表为2的元素,就需要将String的字符串取回,然后自行进行反序列化处理,然后取出第二个元素;
在redis有很多数据类型,有Sring,list,set,hash,zset数据结构,每种数据结构都有自己的本地方法。那么如果要取回存放数据中的下表为2的元素,就可以直接使用redis的list类型的数据结构,用本地方法取回元素,并返回。
所以综上所诉,memCache是数据项计算移动,而redis是计算向数据移动。
在redis中,工作线程是单线程的,对数据进行串行化处理。
redis安装
首先wget下载
然后tar -zxvf ...tar包,
首先阅读readme文件,里面讲了怎么安装
error:报错:cc : Commond not found : C语言的编译器找不到,那么 :
yum install gcc -y
继续执行make命令,又会继续报错,根据readme,应该执行
make distclean(清除缓存)
在源码文件中如果有makefile那么执行make方法。
如果有ocnfigure方法,那么执行./configure命令
最后异步就是执行拷贝过程,
make PREFIX=(路径) install .
接下来就是配置环境变量
vi /etc/profile
//加上
export REDIS_HOME=/opt/bigdata/redis5
//然后再PATH加上REDIS_HOME 用“ :”隔开
:$REDIS_HOME/bin
source /etc/profile
//设置开机自启
cd utils
./install_server.sh
//默认端口号是:6379
后台服务的脚本:/etc/init.d
本篇文章是在学习马士兵老师redis预习课程的时候,记录的笔记。。。