Redis初识

一、盛赞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种基本的数据结构,Redis在版本的更新迭代中,逐渐涌现了更多的数据结构,例如:
1 、BitMap(位图) 能够使用很小的内存来实现高效的存储,例如:布隆过滤器。
2 、HypeLogLog Redis在2.8.19中新增的数据结构,超小内存(12K)实现唯一值计数.缺点:计数有误差率
3 、GEO 地理信息定位,可以实现例如:附近的人功能
如果你用Type来查看的化,你会发现GEO本身是使用集合来实现的,因此以上均属于衍生的数据结构,主要的数据结构仍然只有5种。

5种数据结构
  • 支持多种编程语言

基于TCP的通信协议,因此例如:java、PHP均提供了操作Redis客户端。

  • 功能丰富

发布订阅
支持lua脚本
支持pipeline提高效率

  • 简单

代码精简,不依赖外部库;单线程模型

  • 主从复制


    主从复制
  • 高可用和分布式

Redis本身的数据模型实现高可用是比较困难的,因此在2.8版本之后Redis提供了Redis-Sentinel这样的功能来支持高可用;Redis从3.0版本提供Redis-Cluster支持分布式。

你可能感兴趣的:(Redis初识)