redis的定义
在介绍redis之前,我们要介绍一些定义:
1. NoSql:它泛指非关系型的数据库。
2. 关系型数据库:就是以关系模型来建模的数据库管理系统,关系模型就是以行和列组成二维表。
redis是NoSql数据库中使用较为广泛的非关系型内存数据库,它基于c语言开发。以key-value类型存储。他是单线程,memcache是多线程。
redis默认一共有16个库,编号分别为0-15 默认为0号库,可以通过select来切换,语句为:select 4(意思是切换到4号库)
为什么使用redis
1. 传统数据库是基于磁盘读写,而redis是基于内存读写,可以很快的响应请求,可以支持每秒十几万次的读写操作。所以用好redis对于互联网项目的响应速度和性能至关重要。
2. 数据结构简单,只有6种数据类型,且规则较少。
3. redis支持的value类型更多,redis不仅支持内存存储,还支持持久化到磁盘。
redis在web中的应用场景
1. 缓存常用的数据。减轻数据库压力。
2. 需要高速读写数据的场合使用它快速读写数据。比如抢红包,商品抢购等。
redis应用于缓存
在如今的互联网应用中,常常会存在一些需要高速读写操作的场合,比如商品的秒杀(双11),春运抢票等,一个瞬间可能就会有成千上万的请求,如果使用的是传统的数据库,很容易造成服务器的瘫痪,引发web服务的瘫痪,那么这种情况下一般应对办法就是异步写入数据库,在读写操作高速的情况下使用redis去应对,先缓存到redis中,不去操作数据库,等到高速作业的业务结束之后(一般都是商品数量为0,金额为0等),根据这些触发条件,将数据一次性批量写入数据库中。
redis的6种数据类型
String:字符串 是二进制安全的 最大能存储512MB
hash:哈希 是一个键值对集合,是一个String类型的field和value的映射表,hash适合用于存储对象
list:列表 是简单的字符串列表,可以添加一个元素到列表的头部(左边)或者尾部(右边) 最多可存储232-1元素
set:集合 redis的set是string类型的无序集合
zset(sorted set:有序集合): 不允许重复,每个元素都会关联一个double类型的分数,redis通过分数来为集合种的成员进行从小到大的排序。
HyperLogLog:基数