参考b站狂神说的视频

https://www.bilibili.com/video/BV1S54y1R7SB?p=36&share_source=copy_web

非关系型数据库:nosql数据库

非关系型数据库的优点

1。方便扩展(数据之间没有关系,很好扩展)

2。大数据高性能(nosql的缓存记录数)

3。数据类型是多样型的 (不需要事先设计数据库 随去随用)

 

高性能 高可用  高可扩

 

NOSQL的四大分类

K V键值对.      ————->缓存 日志

美团:redis tait

阿里 百度:redis memcache

 

文档型数据库    —————>分布式文件系统

MongoDB(必须掌握) 

基于分布式文件存储的数据库 C++编写,主要用来处理大量的文档

mongoDB是一个介于关系型数据库和非关系型数据库的中间的产品。MongoDB是非关系型数据库中功能最丰富 最像非关系型数据库的

ConthDB

 

列存储数据库—-》web应用    HBase

图关系数据库——-〉社交网络  Neo4j

 

2.Redis是什么

1.redis远程字典服务c语言编写,支持网络的,基于内存的可持久化 日志型,key value 数据库。支持多种语言的API

免费和开源。 结构化数据库。

 

作用:

内存存储 持久化 (内存中是断电即失)(持久化 rdb aof)

效率高 可以用于高速缓存

发布订阅系统(简单消息队列)

地图信息分析

计时器 计数器

 

特性

1.多样的数据类型

2.持久化

3.集群

4,事务

 

测试性能

Redis-benchmark 压力测试工具

测试 100个并发 100000请求

Refis-benchmark -h localhost -p 6379 -c 100 -n 100000

 

Redis 推荐在linux上搭建

 

3.Redis基础知识

Redis默认有16个数据库  默认使用的第0个

可以使用select进行切换数据库

eg:select 3

 keys * 查看所有的key 

flushall 清空所有的数据库

flushdb 清空当前数据库

   

Redis 是单线程的

Redis是基于内存操作,CPU并不是redis的瓶颈,根据机器的内存和网络带宽

为什么单线程还这么快?

CPU>内存>硬盘

Redis是将所有的数据都存在内存中,对于内存系统来说,没有上下文切换效率就是最高的。

 

它可以用作数据库 缓存 消息中间件。

支持多种类型的数据结构 字符串 散列 列表 集合 有序集合与范围查询

redis的五大数据类型

Redis-Key
判断是否存在   exists key值
移除指定的key值 Move key值 数据库
设置过期时间,单位是秒  expire name 10
查看key的剩余时间 ttl key值
查看key的类型 type key值

string

set key值 value 赋值
get key值 获取值
APPEND key值 “hello” 拼接字符串
如果key不存在就新建
STRLEN key值 字符串长度
incr key值  对应的值加1
decr key值  对应的值减1
INCRBY key值 步长 可以设置指定增量
eg:INCRBY views 10 对应的值加10
获取范围
eg:set key1 “hello,zhangsan”
GETRANGE key1 0 3
“hell”
GETRANGE key1 0 -1 //查看全部字符串
“hello,zhangsan” 

  替换

set key2 abcdefg
SETRANGE key2 1 xx //替换指定位置开始的字符串
get key2 ->axxdefg

setex(set with expire) 设置过期时间
eg:setex key3 30 “hello”
setnx(set if not exists) 不存在设置
eg:setnx mikes  “redis”

 批量获取和批量设置

批量设置 mset
eg: mset key1 value1 key2 value2 key3 value3
批量获取 mget
eg: mget key1 key2 key3
msetnx key1 value1 key4 value4
//msetnx是个原子性操作,一起成功 一起失败

对象 设置一个user对象
user:{id}:{filed}
mset user:1:name zhangsan user:1:age 18
mget user:1:name user:1:age
1)”zhangsan”
2)”18”

 先get后set

getset  先get后set
getset db redis ->(nil)
get db —>redis
Getset db mongdb —->redis
get db—>mongdb

string类型的应用:

计数器

统计数量

统计多单位的数量

对象缓存