候,无论如何一个服务器是不够的,
所以,如果你想使用多个 CPU,你可以考虑一下分片(shard) 。
一个 Redis 实例最多能存放多少的 keys? List、 Set、Sorted Set 他们最多能存放多少元素?
理论上 Redis 可以处理多达 232 的 keys,并且在实际中进行了测试,每个实例至少存放了 2亿 5 千万的 keys 。我们正在测试一些较大的值 。
任何 list、 set、 和 sorted set 都可以放 232 个元素 。
换句话说,Redis 的存储极限是系统中的可用内存值
修改配置不重启 Redis 会实时生效吗?针对运行实例,有许多配置选项可以通过 CONFIG SET 命令进行修改,而无需执行任何
形式的重启 。从 Redis 2.2 开始,可以从 AOF 切换到 RDB 的快照持久性或其他方式
而不需要重启 Redis 。检索 ‘CONFIG GET *’ 命令获取更多信息 。
但偶尔重新启动是必须的,如为升级 Redis 程序到新的版本,或者当你需要修改某些目前
CONFIG 命令还不支持的配置参数的时候
哨兵Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移 。其中三个特性:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常 。
提醒(Notification): 被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员或者其他应用程序发送通知 。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作 。
特点:
1、保证高可用
2、监控各个节点
3、自动故障迁移
缺点:主从模式,切换需要时间丢数据
没有解决 master 写的压力
缓存穿透一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就去后端系统查找(比如DB) 。
一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力 。这就叫做缓存穿透 。
如何避免?
1:对查询结果为空的情况也进行缓存,这样,再次访问时,缓存层会直接返回空值 。缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存 。
2:对一定不存在的key进行过滤 。具体请看布隆过滤器
缓存击穿是针对缓存中没有但数据库有的数据 。
场景是,当Key失效后,假如瞬间突然涌入大量的请求,来请求同一个Key,这些请求不会命中Redis,都会请求到DB,导致数据库压力过大,甚至扛不住,挂掉 。
解决办法
1、设置热点Key,自动检测热点Key,将热点Key的过期时间加大或者设置为永不过期,或者设置为逻辑上永不过期
2、加互斥锁 。当发现没有命中Redis,去查数据库的时候,在执行更新缓存的操作上加锁,当一个线程访问时,其它线程等待,这个线程访问过后,缓存中的数据会被重建,这样其他线程就可以从缓存中取值 。
缓存雪崩是指大量Key同时失效,对这些Key的请求又会打到DB上,同样会导致数据库压力过大甚至挂掉 。
解决办法
1)让Key的失效时间分散开,可以在统一的失效时间上再加一个随机值,或者使用更高级的算法分散失效时间 。
2)构建多个redis实例,个别节点挂了还有别的可以用 。
3)多级缓存:比如增加本地缓存,减小redis压力 。
4)对存储层增加限流措施,当请求超出限制,提供降级服务(一般就是返回错误即可)
单线程的redis为什么这么快
(一)纯内存操作
(二)单线程操作,避免了频繁的上下文切换
(三)采用了非阻塞I/O多路复用机制
(其实就是历史遗留问题,非要吹的这么好 。。。)
redis采用的删除策略redis采用的是定期删除+惰性删除策略 。
为什么不用定时删除策略?
定时删除,用一个定时器来负责监视key,过期则自动删除 。虽然内存及时释放,但是十分消耗CPU资源 。在大并发请求下,CPU要将时间应用在处理请求,而不是删除key,因此没有采用这一策略.
定期删除+惰性删除是如何工作的呢?
定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除 。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死) 。因此,如果只采用定期删除策略,会导致很多key到时间没有删除 。
于是,惰性删除派上用场 。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除 。
推荐阅读
- 铸铁锅干烧太久怎么办 铁锅干烧了很久怎么办
- 了解百度的高级搜索让你需要的数据呈现在你的面前
- 电脑开机密码忘记怎么办?这个办法简直神了
- 梦见汽车掉到下面摔坏了 梦见自己的汽车从高处掉下来摔坏了
- 你中招了吗 论泡茶法
- 梦到水干了抓了很多鱼 梦见水快干了有很多鱼
- 梦见手指头破了流血不止 梦见手指头破了流血了是什么意思
- 周公解梦梦见自己车被砸 做梦梦见自己车被砸了是什么预兆
- 梦见打蛇打不死最后还跑了 梦见蛇打不死又跑了
- 如何了解款红茶的品质
