【Redis】Overview-概览

简介


  Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库,可用作数据库、缓存、消息代理,是目前最为流行的key-value型内存数据库。推荐使用Linux部署,官方不支持Windows构建。


image.png | center | 197x70

特性
  • In memory:基于内存,提供更高性能,同时支持持久化(默认开启),数据更安全。

  • High availability:支持主从复制,通过Redis Sentinel(哨兵模式)实现自动故障转移,保证高可用。

  • Automatic partition:支持水平扩容,使用Redis Cluster(集群)分布式解决方案,解决单机性能瓶颈。

  • Pub/Sub:支持发布/订阅,可以作为消息代理中心使用。

  • Transaction:简单的事务支持,可以理解为命令的批量执行,不支持事务回滚。

  Redis还支持Luau脚本,key失效时间设置,LRU(Least Recently Used)算法等特性。

场景
  • 计数器:可以进行自增自减运算,从而实现计数器功能。如网站访问量的统计,如果使用MySQL数据库进行读写,每一次访问都会进行磁盘I/O操作,影响性能。而Redis这类内存数据库读写性能非常高,很适合频繁读写。
  • 缓存:将热点数据加载到内存中,提高查询效率,设置内存的最大使用量及淘汰策略来保证缓存命中率。
  • 查找表:与缓存类似,利用了Redis快速的查找特性,与缓存不同的是内容不能失效,如DNS记录。
  • 消息队列:List是双向链表,可以通过lpop和Ipush写入和读取消息,实现发布与订阅。
  • Session共享:分布式场景下会部署多个应用服务器,可以使用Redis统一存储Session信息,保证单个应用服务器宕机时不会丢失Session信息,从而保证高可用。
  • 分布式锁:在分布式场景下,无法使用单机环境下的锁实现。当多个节点上的进程都需要获取同一个锁时,就需要使用分布式锁来进行同步。可以使用
    Redis 自带的 SETNX 命令或者使用官方提供的 RedLock 分布式锁实现。
对比

  Redis与其他key-value型数据库(如Memcached)主要有两大区别:

  • Redis不仅支持字符串类型,还支持更为复杂的数据类型,这些数据类型均支持原子操作,更接近于基础数据结构,对程序员友好。
  • 基于内存,但支持持久化。并不是所有数据都一致存储在内存中,可以将一些很久未使用的value交换到磁盘中。
参考
  1. Redis-Wiki
  2. Introduction to Redis
  3. Redis FAQ

猜你喜欢

转载自blog.csdn.net/u013201439/article/details/81010613