1.NOSQL概述
1.1.什么是NOSQL
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NOSQL仅仅是一个概念,泛指菲关系型数据库。
1.2.NOSQL分类
1.2.1.键值(Key-Value)存储数据库
这类数据库主要使用哈希表,其典型代表就是Redis
1.2.2.列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。其典型代表就是HBase
1.2.3.文档型数据库(bson格式)
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。其典型代表是Mongdb,介于关系型数据库和非关系型数据库之间,最像关系型数据库的菲关系型数据库。
1.2.4.图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。其典型代表就是Neo4j,此类数据库存的是关系,不是图片,如朋友圈社交网络,广告推荐…
1.3.为什么要学
1.3.1.技术发展的需要
1.3.2.企业用人单位的基本要求
2.redis入门
2.1.什么是Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
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)。(官网 添加链接描述 中文官网添加链接描述)。
2.2.Redis特性
- Redis性能极高 读取11w/s 写8.1w/s
- 有丰富的数据结构 字符串(strings), 散列(hashes), 列表(lists), 集合(sets),
有序集合(sorted sets),还有3种特殊数据结构 - 原子 redis的所有操作都是原子性 事务
- 支持数据的持久化, AOF与RDB
-
2.3.Redis安装
2.3.1win环境安装(不推荐)
官方推荐在Linux开发使用,win官方不支持
win环境下安装:
a.下载安装包 官网下载
b.解压
c.双击redis-cli.exe即可
2.3.2.linux中安装
参考https://blog.csdn.net/qq_41596346/article/details/114530515
- 启动命令 redis-server 不推荐
此方式启动后,不能再进行其他操作,如果要操作使用ctrl+c,redis-server程序结束 - 推荐使用 redis-server &
- 连接客户端redis-cli -h -p 不写默认127.0.0.1 端口默认6379
Redis端口6379原因:(Redis作者在《Redis as an LRU cache 》添加链接描述中有过解释)
意大利女明星Alessia Merz
关闭命令 shutdown
3.Redis常用命令
3.1.心跳命令ping
用来检测redis客户端与服务端连接是否正常
3.2.对key操作命令
读写命令get/set
keys pattern
查找所有符合给定模式pattern的key,其中pattern是正则表达式
keys的速度非常快,但在一个大的数据库中使用可能会阻塞当前服务器的服务,所以在生产环境禁止使用此命令
exists key
检查指定key是否存在,若存在返回1,否则0
del key [key]
删除给定的一个或多个key,不存在的key会被忽略,返回被删除key的数量
type key
查看key的类型
expire key X
给指定key设置过期时间
ttl key
查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
persist key
移除给定 key 的过期时间
rename old_key new_key
给key改名
3.3.对库的操作命令
select index
切换数据库 一共16个库,索引范围0-15,默认0
dbsize
查看当前数据库的 key 的数量
flushdb
清空当前库 慎用此命令
flushall
清空所有库 慎用此命令