Redis入门简介

一、Redis简介

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化,支持多种开发语言。

二、Redis支持的数据类型

Redis支持多种数据类型,包括:字符串、列表、哈希、集合、有序集合等。下面分别进行介绍。

  1. string(字符串)
    String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。

常规key-value缓存应用。

2.list(列表)
Redis的list是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列。

  1. hash(散列)
    Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

存储部分变更的数据,如用户信息等。

  1. sets (集合)
    set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的set数据结构,可以存储一些集合性的数据。set中的元素是没有顺序的。

  2. sorted set(有序集合)
    和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

三、redis的特点

  • 单线程,单机实现最高10W QPS的访问能力
  • 丰富数据类型
  • 支持分布式哨兵和集群模式等高可用模式部署
  • 读写分离模式
  • 支持事务机制
  • 支持数据过期机制
  • 支持数据持久化机制

四、redis的应用场景

  1. 键值对缓存
    缓存数据库的基本功能,因此不做过多介绍。

  2. 排行榜/计数
    Redis 基于内存,可以非常快速高效的处理增加和减少的操作,相比于使用 SQL 请求的处理方式,性能的提升是非常巨大的。

Redis可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。

典型应用场景:
1)播放数计数的基础组件,用户每播放一次视频,相应的视频播放数就会自增1。
2)排行榜:按照时间、按照数量、按照获得的赞数等排行。

  1. 共享Session
    典型应用场景:用户登陆信息,Redis将用户的Session进行集中管理,每次用户更新或查询登陆信息都直接从Redis中集中获取。

  2. 消息队列
    使用list数据结构,消息发布者push数据,多个消息订阅者通过阻塞线程pop数据,以此提供简单的消息队列能力。

注意:之所以说简单,是因为Redis官方不提供可靠消费/发布的机制;需要自行实现故障转移、队列持久化、队列监控和流量控制等mq具备的功能;

Redis实现消息队列.png
  1. 发布/订阅
    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

注意:Redis无法做消息堆积(新的订阅者无法获取历史订阅消息)

发布订阅.png
  1. 分布式锁
  1. bitmap
    使用bitmap可以实现布隆过滤器实现垃圾邮件过滤的功能,也实现实现用户登录数目统计等功能。下面简要介绍一下Redis 中的bitmap。

字符串big对应的二进制(ASCII码)如图所示, bitmap可以直接操控位。使用每个数位代表一个用户或者状态,相比int数据结构保存,节省了32倍的内存空间。
注意:

  • bitmap并不是适合所有场景去替换常规的数据存储
  • bit是string类型,最大只能存512MB
  • setbit函数会自动补位,所以生产环境要注意setbit的偏移量,可能会造成较大的耗时
bitmap.png

你可能感兴趣的:(Redis入门简介)