Redis 专题
1. 为什么要用 redis 而不用 map/guava 做缓存,Redis 跟 Memcached 的区别
- 因为缓存分为本地缓存和分布式缓存,map/guava 属于本地缓存,Redis/Memcached 属于分布式缓存。
- 本地缓存特点:轻量、快速,生命周期随 JVM 销毁而结束;在多实例下,每个实例保存着独立的缓存,相互不一致。
- 分布式缓存特点:在多实例下,各实例共用一份缓存,具有一致性;要维护分布式服务高可用,程序架构复杂。
Redis 与 Memcached 区别:
Memcached 是多线程,非阻塞 IO 复用的网络模型;Redis 是单线程,多路 IO 复用的网络模型。
Memcached 只支持 String 类型;Redis 支持更丰富的数据类型(主要五种,String、hash、list、set、zset)。
[官网] It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams
Memcached 将数据全部存在内存中;Redis 支持数据的持久化。
Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;Redis 是原生支持 Cluster 模式的。
