一、盛赞Redis
- 高性能 key-value服务器(官方号称QPS能达到10w级别)
- 支持多种数据结构(string、hash、list、set、zset、geo、hyperloglog......)
- 提供丰富功能(pipeline、慢查询、geo、位图)
- 高可用分布式支持
二、Redis初识
1. Redis特点?
- 开源(早期Redis的代码仅只有23000行)
- 基于键值对的存储服务系统(Map类似存储结构)
- 多种数据结构
- 高性能,功能丰富
2.Redis的"前世今生"
Salvatore Sanfilippo(antirez)是redis的作者。redis的起源是因为作者在开发项目时想记录用户访问网站的记录,本来是想用MySql实现,奈何MySql不太适用于业务场景,亦或者是当时开发机器不是特别理想,在这种情况下Redis应运而生。
3. 谁在使用Redis?
或许你应该可以反问:现在还没有在使用Redis的公司吗?国外:Github、Twitter、StackOverFlow、Alibaba、Baidu、sohu、新浪微博、美团·······
4. Redis特性
- 速度块
内存与价格关系图官方给出的数据是10W级别OPS。Redis之所以这么块主要可以归结于以下几个原因:
1.基于内存
2.使用C语言实现
3.单线程模型(避免了线程切换之间的消耗)
比较
- 持久化(断电不丢失数据)
Redis所有的数据保存在内存中,对数据的更新将异步的保存在磁盘上。Redis提供RDB以及AOF支持。
- 多种数据结构
5种数据结构除了以下5种基本的数据结构,Redis在版本的更新迭代中,逐渐涌现了更多的数据结构,例如:
1 、BitMap(位图) 能够使用很小的内存来实现高效的存储,例如:布隆过滤器。
2 、HypeLogLog Redis在2.8.19中新增的数据结构,超小内存(12K)实现唯一值计数.缺点:计数有误差率
3 、GEO 地理信息定位,可以实现例如:附近的人功能
如果你用Type来查看的化,你会发现GEO本身是使用集合来实现的,因此以上均属于衍生的数据结构,主要的数据结构仍然只有5种。
- 支持多种编程语言
基于TCP的通信协议,因此例如:java、PHP均提供了操作Redis客户端。
- 功能丰富
发布订阅
支持lua脚本
支持pipeline提高效率
- 简单
代码精简,不依赖外部库;单线程模型
-
主从复制
主从复制 - 高可用和分布式
Redis本身的数据模型实现高可用是比较困难的,因此在2.8版本之后Redis提供了Redis-Sentinel这样的功能来支持高可用;Redis从3.0版本提供Redis-Cluster支持分布式。
网友评论