目录
通用命令:KEYS、DEL、EXISTS、EXPIRE、TTL
NOSQL与SQL的差异
关于图中的扩展性
- 垂直:关系型数据库在一开始设计数据库时,就没有考虑到数据的分布式存储,通俗来说就是没有考虑到把数据拆分成不同的部分,然后保存到不同的地方。比如一开始把主机A当成数据库服务器,那么主机A的性能就直接决定了数据库服务器的性能,只能通过提高主机A的性能来提高数据库的性能(当然,数据库自身也可以通过一些优化手段来提升性能,但是我觉得这是两码事)。个人的理解:比如主机A的存储空间有1G,那么数据库也最多最多能存储1G的数据,如果想存储更多的数据,那么只能通过给主机A增加存储空间来实现(比如给主机A加内存条啥的),而不能选择说把多的数据存到别的地方,进行分布式存储
- 水平:与垂直相对的,水平是已经考虑到了数据的拆分需求,就是可以把数据拆成多个部分,存储在不同的主机上,实现分布式存储,比如主机A存满了,就存到主机B上。非关系型数据库会通过哈希运算,来判断数据应该存到哪个地方,从而实现数据的拆分,所以对非关系型数据库很容易进行数据扩展
数据结构:结构化 VS 非结构化
数据关联:关系型 VS 非关系型
关系型数据库中数据表之间的联系可以节省数据存储空间
非关系型数据库的数据之间则没有直接的联系,可能会存储重复的数据,如一个商品信息被多个用户购买,那么这个商品信息就会被存储多次
数据查询:SQL查询 VS 非SQL查询
事务特性:满足事 VS 没有完全满足
关系型数据可以全部满足事务的ACID四个 特性,但是非关系型数据库不能同时满足四个特性
Redis 简介
Redis 安装
Redis 是安装在Linux上的,在个人电脑一般都是在虚拟机里安装Linux,安装教程可以在网上找教程,也可以参考我的这个笔记:虚拟机和Linux安装教程
然后Redis的安装和基本使用参见视频:安装Redis和三种启动方式、Redis的命令行客户端、Redis的图形化界面
Redis 数据结构简介
Redis中的数据是以键值对的方式进行存储,即key-value,其中value有多种不同的类型,适用于不同的应用场景
这里提供一个Redis的中文版网站:Redis
可以在这个网站上查看Redis的各种命令及使用教程
Redis 常用命令(基本)
通用命令:KEYS、DEL、EXISTS、EXPIRE、TTL
命令用小写也可以运行
如果要查看某个命令的简要说明,可以使用help命令,比如help keys,也可以在网上查看文档
keys 查看符合模板的所有key
一般在生产中不建议使用该命令,因为该指令是使用模糊查询实现的,当数据量很大时,查询效率就会很慢,并且由于Redis的命令都是由单线程执行的,所以在keys命令执行完成之前,就会一直阻塞其他命令的执行,因此一般不推荐使用
DEL 删除一个指定的key
EXISTS 判断key是否存在
剩下的不截图了,太费时间啦,如果通过help命令还是不明白命令的用法,就可以百度了,或者直接在上面推荐的中文网站上也能找到,后面的笔记也都简单截个图就行
Redis中value的常见类型
String 类型
为了节省空间,数值类型的字符串在编码的时候会把数字转为二进制的形式作为字节去存储,这样一个字节就可以表示一个非常大的数字。而普通的字符串就是把字符转成对应的字节码去存储,占有的内存更多一点
key 的层级结构
Redis中的数据结构都是以键值对的形式存储,即key-value,此时有以下问题
Hash 类型
List 类型
Set 类型
可以通过下面的案例进行练习
SortedSet 类型
上图中的min max都是包含的,即闭区间[min, max],且排名的名次从0开始
可以通过下面的案例进行练习,这里就不把代码贴出来了