一、Redis简介
Redis全称为 Remote Dictionary Server(远程词典服务),开源(BSD许可)的,使用 C 语言开发的。
Redis是内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
内置了复制,LUA脚本,LRU驱动事件,事务和不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。
1、Redis背景
Redis的开发作者是一名意大利的程序员,名字为Salvatore Sanfilippo(网名:antirez)
Salvatore 最初创建 Redis 是为了扩展实时日志分析工具LLOOGG ;早先LLOOGG是基于MySQL的,MySQL的数据是存在磁盘的,存在I/O性能瓶颈,这促使Salvatore编写一个内存型数据库。
让基本的 Redis 服务器运行之后,他决定与其他人分享这项工作,在2009年将Redis正式开源。
2、Redis特性
-
速度快、性能高
- 基于内存
- 命令执行单线程,避免了不必要的上下文切换及竞争条件
- key-value 存储,底层数据结构加持
- IO多路复用
- 多线程 IO 模型
- 支持 Pipelining 命令,可一次发送多条命令来提高吞吐率,减少通信延迟
-
原子操作
-
丰富的数据结构,针对value的
- String(字符串)
- List(链表)
- Set(集合)
- Zset(sorted set --有序集合)
- Hash(哈希类型)
- Bitmaps:一般用于大数据量的二值性统计,比如签到、打卡
- HyperLogLog:用于对数据量超级庞大的日志做去重统计
- Geospatial:地理空间,其主要用于地理位置相关的计算
- Stream:可实现简单的消息中间件的功能(publish/subscribe)
-
提供了众多个性化功能
- 慢查询分析
- 性能测试
- Pipeline
- 简单事务
- Lua脚本扩展
- 发布/订阅
-
持久化
-
主从复制
-
高可用、分布式集群
-
客户端语言广泛