缓存
夕时明月
分享的过程也是自我更新的过程;进步源自点滴的积累
展开
-
WEB缓存_如何解决缓存的一致性
一、如何解决一致性问题一个总的原则一旦数据库更新了,就把原来的缓存失效掉有时候要做到这一点是很困难的,似乎听起来很可笑,但是当系统规模达到一定程度的时候,这个问题就会凸显。在一个大的团队中,每个开发都在系统里面提交自己的代码,很可能某段代码修改了数据库,但是忘了清缓存,造成生产环境发生故障。对于这种问题,主要得靠代码review来解决。另外,在故障发生的时候,我原创 2017-12-09 15:44:56 · 2077 阅读 · 0 评论 -
为什么说Redis是单线程的以及Redis为什么这么快
https://zhuanlan.zhihu.com/p/34438275转载 2018-07-05 21:05:29 · 247 阅读 · 0 评论 -
redis数据类型
链接:https://www.zhihu.com/question/19829601/answer/145409431 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多。最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis内部使用一个redisObject对象来表示所有的key和val...转载 2018-07-05 20:36:49 · 117 阅读 · 0 评论 -
redis简介
介绍redis的概念和使用场景:一、Redis简介 Redis 是一个高性能的key-value数据库。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作...原创 2018-07-05 20:07:20 · 137 阅读 · 0 评论 -
WEB缓存_如何解决缓存的实时性
如何解决缓存的实时性首先"确保从缓存读取的数据是最新的”这个想法就有点走入误区,既然是缓存,那么必然对数据的实时性有一定的容忍度,可以是5分钟,也可以是5小时,取决于不同的业务场景。然后,一定要求是实时性的数据,就不应该从缓存里读取,比如 库存和价格,应该直接从数据库读取实时数据也可以选择缓存较短时间,甚至做到一个网站里不同页面的价格读取采用不同的方案,以“京东商城”为例,京东的商品列表页面的价格...原创 2018-07-05 16:59:18 · 1007 阅读 · 0 评论 -
redis配置文件
【教你看懂redis配置 – 简介】我们可以在启动redis-server时指定应该加载的配置文件,方法如下:复制代码 代码如下: $ ./redis-server /path/to/redis.conf接下来,我们就来讲解下redis配置文件的各个配置项的含义,注意,本文是基于redis-2.8.4版本进行讲解的。redis官方提供的redis.conf文件,足有700+行,其中100多行为有效...转载 2018-06-24 21:30:28 · 2857 阅读 · 0 评论 -
redis事务(multi,exec,discard,watch),错误处理
事务是指“一个完整的动作,要么全部执行,要么什么也没有做”。redis事务四大指令: MULTI、EXEC、DISCARD、WATCH。这四个指令构成了redis事务处理的基础。1.MULTI用来组装一个事务;2.EXEC用来执行一个事务;3.DISCARD用来取消一个事务;4.WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行。redis> MULTI //...转载 2018-06-24 20:49:04 · 5078 阅读 · 1 评论 -
redis_主从同步
从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器转载 2017-12-09 20:48:04 · 379 阅读 · 0 评论 -
redis_持久化
redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)RDB: 就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;AOF: 则是换了一个角度来实现持久化,将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。原创 2017-12-09 20:30:52 · 174 阅读 · 0 评论 -
WEB缓存_缓存过期策略
可以通过过期时间来控制内容过期的情况:比如在一个网站上,总会有一些每日之星用户,或者今日推荐文章。这些内容的新鲜期都很长,比如每日之星的数据,如果 20分钟更新一次,用户也不会有异议。那么,我们在查询出这些用户后,可以将结果集存入缓存中,并设置过期时间为 20 分钟。待自动失效后,再重新查询。无法通过过期时间来控制内容过期的情况:这时有两个策略。一是【主动过期】,二原创 2017-12-09 15:40:47 · 932 阅读 · 0 评论 -
WEB缓存_什么时候使用缓存
一、什么数据可以放缓存不需要实时更新但是又极其消耗数据库的数据。比如网站上商品销售排行榜,这种数据一天统计一次就可以了,用户不会关注其是否是实时的。需要实时更新,但是更新频率不高的数据。比如一个用户的订单列表,他肯定希望能够实时看到自己下的订单,但是大部分用户不会频繁下单。在某个时刻访问量极大而且更新也很频繁的数据。这种数据有一个很典型的例子就是秒杀,在秒杀那一刻,可能有N原创 2017-12-09 15:36:35 · 2439 阅读 · 0 评论 -
WEB缓存_缓存相关的算法
先进先出算法(FIFO):如果一个数据最先进入缓存中,则应该最早淘汰掉。如果服务器接受到的数据请求与时间高度相关,可以考虑使用FIFO算法。最不经常使用算法(LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。最近最少使用算法(LRU):这个原创 2017-12-09 15:33:47 · 199 阅读 · 0 评论 -
WEB缓存_缓存层次
缓存可以发生在这些层次:MySQL内部:在系统调优参数介绍了相关设置数据访问层:比如MyBatis针对SQL语句做缓存,而Hibernate可以精确到单个记录,这里缓存的对象主要是持久化对象Persistence Object应用服务层:这里可以通过编程手段对缓存做到更精准的控制和更多的实现策略,这里缓存的对象是数据传输对象Data Transfer ObjectWeb层:原创 2017-12-09 15:32:22 · 359 阅读 · 0 评论