- 内存NoSQL数据库,可做缓存,消息中间件等
- 丰富的数据结构,list, hash, set等
- 支持持久化aof(日志追加),rad(快照)
- 单线程, 可以避免进程之间共享资源而影响读写速度
是一种k-v结构的数据库,使用方便,简单,一般,读写速度快,因为是单线程,一般只需要双核CPU已经足够,另外留一核处理系统进程。内存和硬盘随数据调整。常用的k-v数据还有memcache,mongodb,memcache不能将数据持久化,一般服务器重启,数据也就丢失了。mongodb数据结构更接近于关系型数据库。
Redis集群方式:
- Standalone模式,单主,一主多从,通过Sentinel实现高可用
- Cluster模式,从主0从,多主多从,至少三主(三个分片)
- 客户端hash分片
以下抄自知乎网友:
官方推荐使用Cluster模式,在RedisCluster中,Sharding采用slot(槽)的概念,一共分为16384个槽。对于每个进入Redis的键值对,根据key进行散列,分配到16384个slot中的某一个中,使用的hash算法也比较简单,就是CRC16后与16384取模。这种集群方式,必须保证16384个solt相参应的node都正常工作,如果某个node发生故障,那它负责的slots也就失效,整个集群将不能工作。
为了增强集群的可用性,官方推荐的方案是将node配置成主从结构,即一主,多从,如果主节点失效,Cluster会根据选举算法从slave节点中选择一个升为主节点。,整个集群继续对外提供服务。
Cluster的新节点识别能力和故障判断及故障转移能力是通过集群中的每个node都在和其它nodes进行通信,这被称为集群总线(cluste bus)。它们使用特殊的端口号,即对外服务端口加10000。例如如果某个node的端口是6379,那么它与其他nodes通信的端口是16379。nodes之间的通信采用特殊的二进制协议。