redis_day01_入门

一、nosql概述

1.1 nosql的演变

1.1.1 单机MySQL的美好时代

在90年代,一个网站的访问量一版都不大,用单个受苦可以完全应对。

在那个时候,更多是静态网页,动态交互类型的网站不多。

redis_day01_入门_第1张图片

上述架构下,数据存储的瓶颈是:

1、数据总量的总大小,一个机器放不下时

2、数据的索引(B+Tree),一个机器放不下时

3、访问量(访问量)一个实力不能承受

1.1.2 Memcached(缓存)+MySQL+垂直拆分

后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上开始出现了性能问题,web程序不再仅仅专注在功能上,同是也在追求性能。

程序员们开始大量的使用缓存技术缓解数据库的压力,优化数据库的结构和索引

开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带来了比较高的IO压力。

在这个时候,Memcached就自然成为一个非常时尚的技术产品

redis_day01_入门_第2张图片

1.1.3MySQL主从读写分离

由于数据库的写入压力增加,Memcached只能给你缓解数据库的读取压力。

读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制的技术来达到读写分离,以提高读写性能和读库的可扩展性。

MySQL的master-slave模式成为这个时候的网站标配了。

redis_day01_入门_第3张图片

1.1 为什么要使用nosql

用户的个人信息,社交网络、地理位置,用户自己产生的数据,用户日志等等爆发式增长!

1.2 什么是nosql?

nosql = not only SQL(不仅仅是SQL)

泛指非关系型数据库,随着web2.0互联网诞生!传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区

用户的个人信息,社交网络、地理位置,这些数据类型的存储不需要一个固定的格式,不需要多余的操作就可以横向扩展

1.3 nosql的特点

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

大数据量高性能(redis每秒写8万,读取11万,nosql的缓存记录即,是一种细粒度的缓存,性能会比较高)

数据类型书多样性的(不需要事先设计数据库!随取随用,如果数据量十分大的表,很多人就无法设计了)

1.4 传统RDBMS和nosql

1.4.1 传统RDBMS

结构化组织

SQL

数据和关系都存在单独的表中

数据操作语音,数据定义语言

严格的一致性

基础的事务

...

1.4.2 nosql

不仅仅是数据

没有固定的查询语言

键值对存储,列存储,文档存储,入刑数据库

最终一致性

CAP定理和BASE(异地多活!)

高性能,高可用,高可扩

二、使用场景

 

三、jredis使用

3.1 下载地址

redis下载

3.2 单例连接

@Test
public void testJedisSingle(){
	//1 设置ip地址和端口
	Jedis jedis = new Jedis("192.168.137.128", 6379);
	//2 设置数据
	jedis.set("name", "itheima");
	//3 获得数据
	String name = jedis.get("name");
	System.out.println(name);
	//4 释放资源
	jedis.close();
}

3.3 连接池连接

@Test
public void testJedisPool(){
	//1 获得连接池配置对象,设置配置项
	JedisPoolConfig config = new JedisPoolConfig();
	// 1.1 最大连接数
	config.setMaxTotal(30);
	// 1.2  最大空闲连接数
	config.setMaxIdle(10);
	
	//2 获得连接池
	JedisPool jedisPool = new JedisPool(config, "192.168.137.128", 6379);
	
	//3 获得核心对象
	Jedis jedis = null;
	try {
		jedis = jedisPool.getResource();
		
		//4 设置数据
		jedis.set("name", "itcast");
		//5 获得数据
		String name = jedis.get("name");
		System.out.println(name);
		
	} catch (Exception e) {
		e.printStackTrace();
	} finally{
		if(jedis != null){
			jedis.close();
		}
		// 虚拟机关闭时,释放pool资源
		if(jedisPool != null){
			jedisPool.close();
		}
	}
}

 

你可能感兴趣的:(redis)