Redsis(第一部分)

141 阅读3分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

大家好,我是掘金新用户小钻风头领,今天是我正式更文的第五天;

发展史

1.单机MySQL 原始模型

单机MySQL

出现的问题: ​ 1.数据量大 ​ 2.数据的索引(B+Tree),一个机器放不下 ​ 3.访问量(读写混合),一个服务器受不了

解决:

2.使用Memcached+Mysql+垂直拆分(读写分离),多加数据库

Memcached

3.分库分表+水平拆分+MySQL集群

MySQL集群

MySQL的引擎: ​ MyISAM: 表锁 ​ Innodb: 行锁 现在的结构 目前架构

NoSql

1.什么是NoSql

​ 非关系型数据库:存储一些不需要固定格式的数据 不需要过多的操作就可以横向扩展 ​ 关系型数据库:比如行和列

2.为什么要用

​ 用户的个人信息,社交网络,地理位置,用户自己产生的数据,用户的日志爆发增长, ​ 这个时候就需要使用Nosql,

3.NoSql的特点

解耦 1.方便扩展(数据之间没有关系) 2.大数据量高性能(Redis一秒可以写8万次,读11万次,NoSql的缓存记录级是一种细粒度的缓存,性能会更高) 3.数据类型多样性(不需要事先设计数据库,随取随用)

4.传统的数据库和NoSql

传统的: ​ 结构化组织 ​ SQL ​ 数据和关系都存储在单独的表中 ​ DDL DQL ​ 严格的一致性 ​ 基础的事务 NoSql: ​ 不仅仅是数据 ​ 没有固定的查询语言 ​ 键值对存储,列存储,文档存储,图形数据库 ​ 最终一致性 ​ CAP和BASE(异地多活) ​ 高性能,高可用,高可扩

5.3V加3高

​ 3V: ​ 1.海量的(Volume)数据 ​ 2.多样的Variety ​ 3.实时的Velocity

​ 3高: ​ 1.高并发 ​ 2.高可扩(水平拆分,) ​ 3.高性能

nosql数据模型

nosql四大分类

1键值对存储,2列存储,3文档存储,4图形数据库

1.KV键值对: ​ Map<String,Object>

2.文档型: ​ bson格式,和JSON一样 ​ MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量文档 ​ 并且是一个介于关系型数据库和非关系性数据库之间的产品 ​ 而且是非关系型数据库中功能最丰富,最像关系型数据库的

3.列存储: ​ Hbase ​ 分布式文件系统

4.图形数据库: ​ 社交关系图

CAP

BASE

Redis入门

1.是什么?

​ 是一个开源的使用ANSI C语言编写的,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。

2.能做什么?

​ 1.内存储存,持久化 ​ 2.效率高,可以用于告诉缓存 ​ 3.发布订阅系统 ​ 4.地图信息分析 ​ 5.计时器,计数器(浏览量)

3.特性

​ 1.持久化 ​ 2.集群 ​ 3.事务

4.Redis安装

​ Windows: ​ GitHub下载 ​

​ 1.开启服务

​ Linux:

redis的基本知识

redis数据库

redis默认有16个数据库,默认使用的是第一个,可以使用Select切换

select 3	#切换数据库
DBSIZE		#查看大小
Keys*		#查看所有的key
flusall		#清空全部
flusdb		#清空当前库

Redis是单线程的

​ 基于内存操作,瓶颈是基于机器的内存和网络带宽

为什么单线程快

​ 多线程(CPU会上下文切换)CPU>内存>硬盘 ​ 核心是redis是将所有的数据放在内存中,所以使用单线程,对于内存来说没有上下文切换,多次读写都是在一个CPU上的

RedisKey

EXISTS key		#是否有此key
move key 1		#移动key 到某个库
del key 		#移除key
EXpire key s 	#设置key过期时间
	ttl key 	#查看剩余时间
type key		#查看什么类型
APPEND key "xxx" #追加字符串