关于redis的几件小事(一)redis的使用目的与问题
1.redis是用来干嘛的?
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
通过上面redis官网的说明可以看出,redis是一个可以对内存数据结构进行存储的东西,它可以用作数据库、缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。
在项目中主要用来用作数据的缓存,将数据缓存在redis中,减轻对底层数据库的访问压力,获得更高的并发和更快的请求响应速度。
2.在项目中如何使用?
我们知道,项目中的数据一般情况下都是存在于数据库当中的,而且数据库的并发性能不是特别高,如果同时接收到大量的请求,数据库可能就会崩掉,而且sql查询会消耗一定的时间,增加请求的响应时间,所以不用缓存会出现系统无法支撑大量的并发情况,请求响应时间会变长等问题。
如果我们在第一次访问某个数据的时候,比如根据一个订单id获取订单的详细信息,将这条数据再返回的时候,也放到缓存里面去,那么下次就可以直接在缓存里面返回数据,不必去查询数据库,这样就可以减轻数据库的访问压力,而且缓存在内存中,势必要比直接访问数据库的速度要快很多,这样也就减小了请求的响应时间,redis在项目中就主要使用来解决数据的缓存问题。
3.为啥要使用缓存?
使用缓存的目的主要有两个:
(1)高性能
比如说有一个很复杂的sql数据查询,这个查询要耗费大量的时间,如果每次都直接取数据查询,那必然会对请求响应时间造成很大的影响,如果能在第一次查询完毕之后,将其直接保存在缓存当中,下次查询的时候,直接在缓存中拿走现成的数据,这样就会大大缩短请求的响应时间。
(2)高并发
我们知道数据库能承受的并发是有限的,那么在流量高峰期(比如,抢购、打折、秒杀等等),会有大量的请求进入我们的系统,比如查询某个商品的详情,如果我们没有缓冲,那么给次查询都要走数据库,假如我们的数据库每秒只能接受2000个请求,结果一秒钟进来了5000个请求,那么数据库就直接崩掉了,毫无高并发可言,而如果我们中间具有缓存服务,那么在第一个用户查询商品详情时(或者提前将放好)我们可以直接将商品的详情信息数据放到缓存里面,这样在后续用户查询时就可以直接走缓存,不走数据库,缓存是基于内存的,它的访问速度快,并发高;因此就可以提供一个高并发的支持。
4.用了缓存会出现什么问题?
主要常见的有下面三个问题
1)缓存与数据库双写不一致
2)缓存雪崩
3)缓存穿透
4)缓存并发竞争
关于redis的几件小事(一)redis的使用目的与问题的更多相关文章
- 关于redis的几件小事(十)redis cluster模式
redis cluster是redis提供的集群模式. 1.redis cluster的架构 ①可以有多个master node,每个master node 都可以挂载多个slave node. ②读 ...
- 关于redis的几件小事(六)redis的持久化
1.redis持久化的意义 redis持久化的意义,在于 故障恢复 . 如果没有对数据进行持久化,那么如果redis遇到灾难性的故障,就会丢失所有的数据. 如果通过redis的持久化机制将数据持久化到 ...
- 关于redis的几件小事(五)redis保证高并发以及高可用
如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 redis高并发:主从架构 ...
- 关于redis的几件小事(二)redis线程模型
1.memcached和redis有什么区别? (1)Redis支持服务器端的数据操作 redis和memcached相比,redis拥有更多的 数据结构并且支持更丰富的数据操作 ,通常在memcac ...
- 关于redis的几件小事(七)redis缓存雪崩与穿透
1.缓存雪崩 (1)什么是缓存雪崩 缓存雪崩指的是在同一时刻,缓存大量失效,导致大量的请求直接到了数据库,数据库压力剧增,引起系统崩溃.可能出现的情况有: ①大量的key设置了相同的过期时间,导致在缓 ...
- 关于redis的几件小事(四)redis的过期策略以及内存淘汰机制
1.数据为什么会过期? 首先,要明白redis是用来做数据缓存的,不是用来做数据存储的(当然也可以当数据库用),所以数据时候过期的,过期的数据就不见了,过期主要有两种情况, ①在设置缓存数据时制定了过 ...
- 关于redis的几件小事(三)redis的数据类型与使用场景
1.string 这是最基本的类型了,就是普通的set和get,做简单的kv缓存. 2.hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对 ...
- 关于redis的几件小事(九)redis的并发竞争问题
1.什么是并发竞争 就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 2.怎么解决 采 ...
- 关于Redis的几件小事 | 高并发和高可用
如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了. redis高并发:主从架构,一主多从,一般 ...
随机推荐
- window7上爬虫框架Scrapy的安装 --错误分析lxml
本文讲解的是python已经安装成功的情况下,且pip可以使用 版本:python2.7.10 #安装 pip install Scrapy 在安装Scrapy框架时总会报lxml安装不了的各种错误, ...
- MVC中上传文件
与asp.net中几乎一样,使用表单提交的方式上传文件(如果是使用了第三方插件的话,那么就另当别论) @{ ViewBag.Title = "Index"; Layout = nu ...
- 私有npm计划
为什么要建立私有npm 提高代码复用程度,增加团队沉淀 剥离项目依赖,工程更加轻量 引用全量更新,支持版本降级 建立模块文档,降低上手难度 全员把关代码质量,无需重复测试 构建工具已成趋势,优化发布流 ...
- react源码之render
1.最近学习react源码,刚刚入门,看了render的原理,到了fiberRoot的创建 如图:
- 数据分析 - numpy 模块
numpy 概述 ▨ Numerical Python. 补充了python所欠缺的数值计算能力 ▨ Numpy是其他数据分析及机器学习库的底层库 ▨ Numpy完全标准C语言实现,运行效率充分 ...
- libvirt报错总结
libvirt 的一些报错总结 出现Permission denied error: internal error process exited while connecting to monitor ...
- 整合Django的信息显示框架messages framework
##主要用在view.login函数,不管登录是否成功,都会设置message变量,然后在login.html显示 from django.contrib import messages#需要导的包 ...
- ubuntu 设置qt程序开机启动
1.建立一个桌面文件,forklift-app.desktop Name填写程序的名字 Exec执行程序的路径 [Desktop Entry] Version=1.0 Name=forklift-ap ...
- office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件
前提条件: 1.一台windows server 2008R2服务器,并且已经配置了域: 服务器连接域控制器的相关文档,请查看上一篇文章: office web apps安装部署,配置https,负载 ...
- python-阿里镜像源-pip
将pip源设置为国内 >>>windows 1 地址栏输入%appdata% 2 新建pip文件价 3 文件夹里建pip.ini 内容: [global] timeout = 600 ...