Redis特点及在系统中的应用
Posted 任长江
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis特点及在系统中的应用相关的知识,希望对你有一定的参考价值。
Redis特点
1、 数据类型
Redis使用key-value格式存储数据,其中key就是字符串,但是value有多种数据类型:(1)string:存储字符串(2)list集合:可对头部和尾部进行操作(3)Map:键值对存储
(4)set:无需不重复集合(5)sortedSet:score排序的集合。其中最常用的还是字符串形式,一般不建议用SortedSet类型,因为它排序很消耗redis的性能,而且不可重复。
2、存储结构
redis的存储方式为key-value形式,无关系性,数据结构简单这也是其区别于mysql的一大特点,redis将不同数据类型的数据通过key-value形式进行快速的读写操作。如果是关系型数据库就需要进行多表的关联进行读写操作。
3、持久化
Redis的持久化方式有RDB和AOF两种,RDB是将内存中的数据压缩后写入到硬盘上,AOF是将操作的日志整理写到硬盘,而且通过配置可以设置不同的持久化方式,这两种方式有效减轻了服务器的压力,同时在很大程度上防止了数据丢失。
4、缺点
Redis不支持对事务的操作,对于数据安全性要求很高的数据传输就不适合了,而且由于redis的结构简单,对于很多数据类型要求较高的存储也不适合。
系统中的应用
我在系统中对redis的应用有如下几点:
1、存储首页内容:
首页是网站访问频率最高的,如果每次首页内容都需要从后台取就会对数据库造成很大压力,如果将首页内容添加到缓存,每次都从缓存中取就可以解决该问题,但是需要注意:业务逻辑中要添加判断,如果没有从缓存中取出内容,就需要到数据中查询,查询之后再将查询的内容同步到缓存中。同时需要注意,后台内容管理控制首页内容发生时需要将redis中首页缓存清空,否则每次查询还是从redis中取,造成后台内容将无法同步到前台页面。
2、存储商品信息:
因为有很多商品是热销商品,每天用户访问量会很大,这样就会对数据造成很大压力,所以也可以将这些商品信息,需要注意的是,商品信息的数据量很大,如果很多商品长时间存放在redis中会对redis造成很大压力,影响redis的性能,所以,存放在redis中的商品信息需要设定过期时间(根据网站规模进行设定),这样如果一段时间内如果没有用户访问该商品,该商品的信息将从redis中清除。与首页内容原理相同,商品信息也需要注意缓存同步后台数据的问题。
3、协助实现单点登录
实现单点有很多方法,在这里的实现方法为:将session信息存储到redis中实现的。具体过程为,为需要用户登录的页面访问添加springMVC拦截器,有拦截器处理从redis中获取用户信息,如果没有获取到,就说明用户还没有登录,要求用户登录,如果取到用户信息就说明用户已经登录,允许访问。处于安全考虑这里需要设定redis的过期时间。
4、秒杀方案
网站搞活动会有限量抢购,这样如果每次都访问数据库恐怕会对数据库造成很大压力,这里借助redis可以做如下实现:将抢购商品信息存放到redis中,其中包括商品的限量数量,由于redis是单线程处理请求的,所以redis可以将请求以队列形式依次处理请求,每访问一次采用redis的decr命令对商品数量减1,当数量到0就说明商已经抢完。其中也有很多需要注意的问题,在这里只是redis应用的一个总体说明。
以上是关于Redis特点及在系统中的应用的主要内容,如果未能解决你的问题,请参考以下文章