Redis 是一个开源(BSD许可)的,由C语言实现的基于key-value 的nosql 内存数据库;采用单线程架构;

它可以用作内存数据库(这里所说内存数据库,是因为redis毕竟不是关系性数据库,在数据持久化等方面和mysql 相比还是有不足的。)、缓存和消息中间件。

Redis 支持的数据类型有字符串(strings)哈希(hash)列表(list)集合(set)有序集合(zset)位图(bitmap)地理信息定位(geospatial)等多种数据结构和算法。

Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,可以保证内存中的数据不会“丢失”。

Redis还提供了键过期、发布订阅、事务、Lua脚本等附加功能。

  • 速度快

Redis 执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒;实际应用中根据机器的性能会有所不同。

速度快可以归纳为四点:
1:数据都是放在内存中的;
2:Redis 是用C语言写的;
3:Redis 是单线程架构,预防了多线程竞争问题;
4:Redis的作者对其源码精打细磨。

  • 基于键值对的数据结构

几乎所有编程语言都提供了类似的键值对功能,如JAVA中的Map、Python中的dict。

Redis 支持的数据类型有字符串(strings)哈希(hash)列表(list)集合(set)有序集合(zset)

  • 丰富的功能
Redis 提供了丰富的功能: 1:键过期(缓存清理)
2:发布、订阅(可用于消息系统)
3:支持Lua脚本(可以使用lua创造新的Redis命令)
4:简单事务
5:Pipeline功能(批量处理命令,减少网络开销)
  • 简单稳定
Redis 的源码只有5万多行左右;3.0以后的版本增加了集群特性。不需要依赖操作系统中的类库(Memcache则需要)
  • 客户端语言多
Redis提供了简单的TCP通信协议,其客户端几乎涵盖了主流的编程语言。
  • 持久化
Redis 提供两种持久化方式:RDB和AOF,使用此两种策略可以将内存中的数据保存到硬盘上。这样就可以保证持久性。但尽量不要使用Redis 做数据库使用。该方面与其它的数据库(mysql、oracle等)相比还是有不足的。
  • 主从复制
Redis 提供了主从复制功能,可以将Redis 的主数据库同步至从数据库。
  • 高可用的分布式
Redis从2.8版本之后,提供了高可用实现Redis Sentinel,可以保证Redis节点在发生故障的时候自动转移。
Redis从3.0版本之后,提供了Redis Cluster,是真正的Redis分布式实现。

1:缓存
2:排行榜系统
3:计数器系统
4:社交系统
5:消息队列

Copyright © 2019-2020 2024-12-02 15:10:21