最近在看Redis的时候遇到一个问题,日常的使用当中似乎并没有遇到redis多个线程同时访问一个数据的时候导致阻塞或长时间未响应的情况,但目前并没有找到相关的一些解释,只是说将数据放置到内存中,读取的速度会加快。
但我觉得这个应该不足以解释redis当中它是如何处理这样的场景的
最近在看Redis的时候遇到一个问题,日常的使用当中似乎并没有遇到redis多个线程同时访问一个数据的时候导致阻塞或长时间未响应的情况,但目前并没有找到相关的一些解释,只是说将数据放置到内存中,读取的速度会加快。
但我觉得这个应该不足以解释redis当中它是如何处理这样的场景的
鉴于你的这个情况,如果不是楼上所说的大key的问题,那么就是你确实是有无敌大量的读请求,那我的建议是,酌情设立二级缓存,简单一点直接使用少量虚拟机内存,或者使用ecache进行尝试,对redis读请求进行限流,不过还是建议加redis机器😀
1.增加本地缓存,可能会失去一部分一致性
2.一个数据,可以拆成多个备份,比如:key1,key2,key3,但是要保证每次也是赛多份,线上一般都是集群的,会hash到多个分片,可以保证高并发。
8 回答6.4k 阅读
1 回答4.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
3 回答1.7k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
因为一般的数据都不大,内存访问的效率很快,所以你是感觉不出来。
redis本身的读都是单线程的,直接读取内存,如果你把一个key设置的很大,读取的时候会阻塞一下,还是有明显的感觉的,所以在使用的时候要特别注意大key。一般redis操作10ms都算慢的了。