redis深入了解(一)
2018-03-27 20:50
597 查看
redis的常见问题:1.redis是内存版数据库,如果内存满了怎么办?
方案一.. redis集群1)一定程度可以解决内存不够用的情况
2)但是随着网站用户不断增多,用户所产生的数据将会愈来愈多,3)服务器越多,并不代表性能越高方案二。内存淘汰策略----最近不使用的数据从内存淘汰redis.conf 配置内存淘汰策略1)maxmemory 0 //表示淘汰所有内存2)maxmenory-poliy allkeys-lru//有限移除最近不使用的key
2.redis是否是线程安全的数据库 redis 是线程安全 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案,是线程安全的。 Redis三个主要特点: Redis是一个单线程数据库(单通道) Redis数据库完全在内存中,使用磁盘仅用于持久性。 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。 Redis可以将数据复制到任意数量的从服务器。3.redis的hash槽,你是怎么理解的?(redis如何存储的)redis共有16384个hash槽,时固定的不能改变,无论集群节点多少。hash槽将会动态的分配给每个服务器hash槽存满了怎么办?注意:hash槽不是用来存储数据的,时用来计算该把数据存储在哪个服务器里。相当于仓库的门,
4.redis缓存穿透,缓存击穿,缓存雪崩?
设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。
方案一.. redis集群1)一定程度可以解决内存不够用的情况
2)但是随着网站用户不断增多,用户所产生的数据将会愈来愈多,3)服务器越多,并不代表性能越高方案二。内存淘汰策略----最近不使用的数据从内存淘汰redis.conf 配置内存淘汰策略1)maxmemory 0 //表示淘汰所有内存2)maxmenory-poliy allkeys-lru//有限移除最近不使用的key
2.redis是否是线程安全的数据库 redis 是线程安全 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案,是线程安全的。 Redis三个主要特点: Redis是一个单线程数据库(单通道) Redis数据库完全在内存中,使用磁盘仅用于持久性。 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。 Redis可以将数据复制到任意数量的从服务器。3.redis的hash槽,你是怎么理解的?(redis如何存储的)redis共有16384个hash槽,时固定的不能改变,无论集群节点多少。hash槽将会动态的分配给每个服务器hash槽存满了怎么办?注意:hash槽不是用来存储数据的,时用来计算该把数据存储在哪个服务器里。相当于仓库的门,
4.redis缓存穿透,缓存击穿,缓存雪崩?
设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。
缓存穿透
缓存穿透是指查询一个在缓存和数据库中不存在的数据,问题:这个数据库访问量瞬间增大,数据库可能发生io阻塞,雪崩。解决:如果发现数据库没有数据,放一个空字符,并且设置过期时间解决方案
有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。缓存击穿
缓存中有个key过期了,恰好此时这个key面临一个高并发查询,此时缓存中没有数据,并发压力瞬间被转移到数据库,造成数据库雪崩。。解决方案
redis缓存之前加锁进行控制,当第一次访问没有值,查询数据库放入
缓存雪崩
缓存中很多key同时过期,恰好此时这些key面临高并发查询,发现缓存中数据消失,这些并发压力将会瞬间转移给数据库,数据库面临非常高的并发压力,发送雪崩。解决方案
让缓存的key不同时过期,让redis过期时间5分钟时间+随机数时间 过期相关文章推荐
- Redis-Sampler:深入了解你的Redis存储
- Redis-Sampler:深入了解你的Redis存储
- Redis-Sampler:深入了解你的Redis存储
- 深入了解Redis
- 一文深入了解Redis!
- Redis (六 深入了解redis内核)
- 深入了解Redis的性能
- Redis (六 深入了解redis内核)
- 深入了解一下Redis的内存模型!
- 带你逐步深入了解SSM框架——淘淘商城项目之redis缓存
- 深入了解html5新标签应用及感悟
- 深入了解 Lotus Quickr V8.0 的文档管理
- 深入了解ASMM
- 深入了解Node.js中的一些特性
- mysql数据库深入了解
- 用Unity制作游戏,你需要深入了解一下IL2CPP
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- 通过项目逐步深入了解Mybatis<四>
- 深入了解MySQL