redis,groupcache,memcached

redis和memcached的区别

memcached最大value为1mb,而redis最大为1g

memcached只支持简单的key-value结构,而redis所支持的数据类型要丰富的多,而通常在Memcached里,使用者需要将数据拿到客户端来进行类似的修改再set回去,这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作, Redis会是更好的选择。

redis并不是将所有的数据一直存储在内存中的,redis的持久化会将数据根据lru存在硬盘中

memcached默认使用slab allocation管理内存,来解决内存碎片问题

redis只使用单核,而memcached可使用多核,所有在数据量和流量较大时,选用memcached更好

memcached本身不支持分布式,只能自己手写一个类似一致性哈希这种东西来实现负载均衡,redis原生支持分布式存储

分布式

选择

memcache和groupcache区别不大,和redis相比,在流量小,并且不需要用到redis的数据结构的时候选用,在高复杂度系统场景下选用redis更为合适

缓存穿透

缓存和数据库都没有的数据被查询就会发生缓存穿透,大量这种请求不做处理很容易击穿整个缓存系统

布隆过滤器