redis简介

2019-10-20  本文已影响0人  vincent浩哥

为什么要用Redis

NoSQL:

NoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用SQL作为查询语言。 NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系。

常见的NoSQL有:redis、memcached、mongodb、guava(loadingCache)

redis的定义:

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多 种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。

作为同款功能的内存缓存产品,redis和memcached各有什么优势:

内存管理机制
Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小, 将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎 片问题。空闲列表进行判断存储状态,【类似于Java虚拟机对象的分配,空闲列表】

Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,【CPU内存是连续,类似于Java虚拟机对象的分配,直接内存分配(指针碰撞)】

数据持久化方案
memcached不支持内存数据的持久化操作,所有的数据都以in-memory的形式存储。

redis支持持久化操作。redis提供了两种不同的持久化方法来讲数据存储到硬盘里面, 第一种是rdb形式,一种是aof形式:
rdb:属于全量数据备份,备份的是数据
aof:append only if,增量持久化备份,备份的是指令

缓存数据过期机制
概念:key,设计一个小时之后过期,超过一个小时查数据就会查不到

Memcached 在删除失效主键时也是采用的消极方法,即 Memcached 内部也不会监视主键是否失效,而是在通过 Get 访问主键时才会检查其是否已经失效

Redis 定时、定期等多种缓存失效机制,减少内存泄漏

支持的数据类型
Memcached支持单一数据类型:[k,v]
redis支持五种数据类型:【字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)】

redis作为数据库的使用有什么优缺点?

优点:没有Scheme约束,数据结构的变更相对容易,一开始确定数据类型, 抗压能力强,性能极高,10万/qps

缺点:没有索引,没有外键,缺少int/date等基本数据类型,多条件查询需要通过集合内联(sinter,zinterstore) 和连接间接实现开发效率低,可维护性不佳

redis作为缓存的使用,搭配数据库使用的两种方案

1.jedis整合使用方案 set key,value ["11","22"] 第一层在缓存进行查询,如果得到数据则直接返回, 第二层在数据库进行查询,并且刷新缓存,方便下次查询 ["33,"44"]

2.作为mybatis/hibernate二级缓存使用方案,一级缓存:sqlSession,进程缓存,单次链接有效

Redis安装启动

redis4.0安装步骤:
redis三种启动方式以及其中的使用区别

1.直接启动(例如:cd src ./redis-server)
2.通过指定配置文件启动(例如:cd src ./redis-server ../redis.conf)
3.使用redis启动脚本设置开机启动,linux配置开机自启动/etc/init.d
配置步骤:

chkconfig redisd on
service redisd start 打开服务
service redisd stop 关闭服务

Redis五种数据类型和消息订阅

Key / Value数据类型

String是最常用的一种数据类型,普通的key/value存储都可以归为此类。
常用的命令:

Hash类型
List类型
Set类型
SortSet类型

set的基础增加顺序score,再根据score进行排序
实战(用途):通过sortset实现排行榜

redis消息订阅发布

作用:发布订阅类似于信息管道,用来进行系统之间消息解耦,类似于mq,rabbitmq、rocketmq、kafka、activemq主要有消息发布者和消息订阅者。比如运用于:订单支付成功,会员系统加积分、钱包进行扣钱操作、发货系统(下发商品)

传统关系型数据库事务与Redis事务

事务概要和事务隔离级别
mysql事务隔离机制和MVCC

redis事务隔离机制可重复读讲解(repeatable read)

select @@tx_isolation ; 查看事务类型

redis事务机制
redis事务ACID

执行错误
如果命令在事务执行的过程中发生错误,比如说,对一个不同类型的 key 执行了错误的操作, 那么 Redis 只会将错误包含在事务的结果中, 这不会引起事务中断或整个失败,不会影响已执行事务命令的结果,也不会影响后面要执行的事务命令, 所以它对事务的一致性也没有影响

上一篇 下一篇

猜你喜欢

热点阅读