Redis的介绍

一、介绍

1、关系型数据库与非关系型数据库

非关系型数据库NoSql:redis、mongodb、hbase...

1)数据之间没有关联关系

2)数据时存在内存里面的

NoSQL:not only sql

2、NOSQL和关系型数据库比较

优点:

1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。

2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。

3)存储数据的格式:nosql的存储格式是key、value形式,key是字符串,value支持很多格式,文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。

4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。

缺点:

1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。

2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。(不像sql那样有标准,学习了redis再学hbase又是全新的)

3)不提供关系型数据库对事务的处理。

3、非关系型数据库的优势:

1)性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

2)可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系系数据库的数据。

4、Map集合可以做缓存吗?为什么?

Map存储的数据在内存,关了就没有了

内存中缓存的选择有很多,可以使用Map集合,但是Map集合只能当前项目使用,但是要做分布式的部署有多台电脑的话Map集合就不合适。使用非关系型数据库数据是存储在内存中的而且可以部署独立的机器。

5、什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

1) 字符串类型 string

2) 哈希类型 hash(java map)

3) 列表类型 list

4) 集合类型 set(无序不重复)

5) 有序集合类型 sortedset(有序不重复)

6、redis的应用场景

• 缓存(数据查询、短连接、新闻内容、商品内容等等)

• 聊天室的在线好友列表

• 任务队列。(秒杀、抢购、12306等等)

• 应用排行榜

• 网站访问统计

• 数据过期处理(可以精确到毫秒

• 分布式集群架构中的session分离

二、Redis工作原理

Redis可以用在查询一些不经常发生变化的数据:

缓存的思想:

首先从Redis中取数据:

1、Redis中有:直接返回

2、Redis中没有:

(1)从数据库中查询

(2)将数据放到Redis缓存中

(3)返回数据

三、Redis支持的数据类型

问题:Redis有几种数据类型?

redis的数据结构:

redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构

value的数据结构:

1) 字符串类型 string

2) 哈希类型 hash : map格式

3) 列表类型 list : linkedlist格式。支持重复元素

4) 集合类型 set : 不允许重复元素

5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序

四、Redis的使用

1、string

2、hash

3、list

4、set

5、sortedset

五、Redis在项目中的使用

1、使用springboot封装的spring-data-redis

Spring Data Redis

spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包Jedis进行了高度封装,

RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅。

spring-data-redis针对jedis提供了如下功能:

1、连接池自动管理,提供了一个高度封装的“RedisTemplate”类

2、针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口

  • ValueOperations:简单K-V操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:针对list类型的数据操作

2、使用:加入依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

关于Redis的一些问题

1、Redis项目使用情况?怎么保证数据一致性问题?

2、Redis如何保证插入的数据是原子性的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值