redis 课程笔记
1.Nosql起源
随着web2.0时代的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”(非关系),“Not Only SQL”(不仅仅是SQL)也被很多人接受。
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2.常见nosql类型
键值数据库:可以理解为一个分布式的 Hashmap,支持 SET/GET 操作,值是string,list,set,zset,hash等。
列式数据库:可以理解为一个每行列数可变的数据表。
文档数据库:也是键值形式存储,键值数据库的一种衍生品。值是文档,文档格式包括 XML、YAML、JSON 和 BSON 等,也可以使用二进制格式。[MongoDB]
图形数据库:以图为数据模型来存储数据,图来表示对象的集合以及关系。适用于相互关联的数据,可以高效地处理实体间的关系,尤其适合于社交网络、依赖分析、推荐系统、路径寻找、科学论文引用等场景。
4. Nosql的好处
为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案
5. Nosql和关系型数据库区别
-
区别一
-
关系型数据库是需要依赖数据库的关系的 比如说主外键 数据在硬盘上
-
非关系型数据库依赖特殊结果 比如redis是key-value的数据格式 在内存中 可以持久化
-
-
区别二
-
关系型数据库 有主外键关系
-
非关系型数据库 没有这个概念
-
-
区别三:
-
关系型数据库: 操作的是硬盘 效率低 安全性稍微高
-
非关系型数据库(redis) 操作的是内存 效率高 但是不安全 数据可能丢失 ,支持持久化
-
2. 缓存
缓存的功能 就是提高性能 减少与数据库的交互
第一:缓存数据
第二:临时数据
缓存的思想(编写代码)
-
当用户第一次查询的时候 去查询数据库 查询到的内容 一方面返给页面 另外一方面做缓存(存在容器中)
-
当用户第二次查询的时候 此时缓存中 就有了 此时不用查询数据库 就能够拿到数据
-
当增删改数据库信息时 把缓存清空
缓存的弊端
做到数据的实时性 比较麻烦 需要在增删改的时候 清空数据
3. Redis
1. 什么是redis
Redis是使用c语言开发的一个高性能键值NoSQL数据库。Redis可以通过一些键值类型来存储数据
Redis是一个key-value存储系统。
Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统。
它支持存储的类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
为了保证效率,数据都是缓存在内存中。同时,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
2. Redis的特点
-
高性能,持久存储,适应高并发的应用场景。
-
相比许多键值数据存储,Redis拥有一套较为丰富的数据类型
-
Redis数据库完全在内存中,使用磁盘仅用于持久性。
-
Redis可以将数据复制到任意数量的从服务器。
3. Redis的优势
-
异常快速:Redis的速度非常快,支持丰富的数据类型。读的速度是110000次/s,写的速度是81000次/s 。
-
操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
-
类型:Redis支持多数开发人员已经知道的类型。像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。
-
多功能实用工具:Redis是一个多实用的工具,例如缓存,消息队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。
4. Redis的作用
-
缓存
-
存临时数据
5. Redis的下载
6. Redis的文件介绍
7. Redis的启动
8. 客户端连接
9. Redis的Value的取值
注意: Redis存的key-value 但是key只能是字符串 value的取值有如下几个类型
-
字符串(string)
-
散列(hash)
-
列表(list)
-
集合(set)
-
有序集合(sortedSet)
10. List&Set&sortSet区别
-
list类型: 有顺序 可以重复
-
set类型:没有顺序 不能重复
-
sortedSet: 有顺序 不能重复
11. String类型的操作
1. 存取单个数据
-
存值
set key value
-
取值
get key
2. 存取多个数据
-
存值 muit-part
mset key value key value ....
-
取值
mget key1 key2
3. 删除数据
del key