常识:数据存在磁盘;
磁盘的维度
寻址:ms
带宽:单位时间内多大的数据流动。g/M
内存:寻址 ns 秒》毫秒》微妙》纳秒
i/o buffer: 成本问题,
磁盘与磁道,扇区,一扇区518byte, 扇区越小,成本越到,(索引多),
操作系统,4k 无论你读多少,都是最少4k从磁盘拿
mysql:也最小4k 小于4k 浪费,数据没有索引和直接从磁盘读取 一样慢
磁盘比内存寻址 少了10万倍
内存中指只存树干,索引和数据都存到磁盘中, 通过树干找到,索引,然后把索引从磁盘拿到内存中,然后在通过索引把数据拿到内存中。
数据库的表很多,性能降低? 如果是增删改还是慢,查询速度
1:一个查询或者少量查询,依然很快
2:并发大,会受带宽影响速度,
并发的时候,带宽是 一个个的查询。
-------------
数据在内存,和磁盘体积不一样。磁盘没有指针
----------------------
基础设施:
冯诺依曼体系制约,
以太网、ip/tcp的网络(不稳定,整合多个技术不稳定)
memcache :value是没有类型,取出来需要解码,变成你对应的数据结构
redis:value是有类型的
memcache 通过key取出所有数据, redis通过key,取出的是对应的
计算向数据移动,memcache 是通过key把value拿到程序中计算,redis是因为value有类型会在服务器计算 在直接拿到程序中
这个两个有啥区别吗?计算的是什么 , 在redis服务器计算还是在程序中计算 有很大区别嘛?、
答案:我的key对应的只就是list。 你的意思是, memcache 如果我的value是一个list, 但是我想通过key取出对应的list的一个数据 不可以取出来,redis就可以取出来是嘛 是这意思
就因为redis 有类型 可以直接取出来