Redis初识

Redis是什么?

  • 开源
  • 基于键值的存储服务系统
  • 多种数据结构
  • 高性能、功能丰富

Redis的特性

  • 速度快
  • 持久化
  • 多种数据结构
  • 支持多种编辑语言
  • 功能丰富
  • 简单
  • 主从复制
  • 高可用、分布式
Redis特性-速度快

10w ops (官方10w次读写)
数据存在哪? 内存
什么语言写? C语言(50000 line)
线程模型? 单线程

速度快-内存


image.png
Redis特性-持久化(断电不丢数据)

Redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。

Redis特性-多种数据结构
String(字符串)

string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

哈希(Hash)类型:(map)

我们可以将Redis中的Hash类型看成具有>,其中同一个key可以有多个不同key值的,所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。

List类型

List类型是按照插入顺序排序的字符串链表(所以它这里的list指的相当于java中的linkesdlist)。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List类型:(链表:最后一个插入的元素,位置索引为o)

set类型

Set类型看作为没有排序的字符集合。如果多次添加相同元素,Set中将仅保留该元素的一份拷贝。

Sorted-Sets类型

Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。成员是唯一的,但是分数(score)却是可以重复的。

分数:按分数高低排序。位置索引:分数最低的索引为0

Bitmaps

bitmaps不是一个真实的数据结构。而是String类型上的一组面向bit操作的集合。由于strings是二进制安全的blob,并且它们的最大长度是512m,所以bitmaps能最大设置2^32个不同的bit。
Bitmaps的最大优点就是存储信息时可以节省大量的空间。例如在一个系统中,不同的用户被一个增长的用户ID表示。40亿(2^32=410241024*1024≈40亿)用户只需要512M内存就能记住某种信息,例如用户是否登录过。

HyperLogLogs

HyperLogLog是用于计算唯一事物的概率数据结构(从技术上讲,这被称为估计集合的基数)。如果统计唯一项,项目越多,需要的内存就越多。因为需要记住过去已经看过的项,从而避免多次统计这些项。

GEO

Redis的GEO特性在 Redis3.2版本中推出,这个功能可以将用户给定的地理位置(经度和纬度)信息储存起来,并对这些信息进行操作

功能丰富

发布订阅
Lua脚本
事务
pipeline

简单

不依赖外部库(like libevent)
单线程模型

主从复制
高可用、分布式

高可用 : Redis-Sentinel(v2.8)支持高可用
分布式:Redis-Cluster(v3.0)支持分布式

Redis典型应用场景

  • 缓存系统

  • 计数器
    微博点赞与评论技术
    视频网站播放数量

  • 消息队列系统
    简单消息队列

  • 排行榜

  • 社交网络
    粉丝数

  • 实时系统
    垃圾邮件过滤器

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