Redis(一):初始Redis

Redis基本介绍

Redis 的全称是 Remote Dictionary Server,Redis是一个开放源代码、内存数据结构存储系统,被广泛应用于缓存、消息队列、实时统计等场景。Redis使用C编写,支持多种数据结构,例如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis支持许多高级特性,例如事务处理(transactions)、Pub/Sub(发布/订阅)模式、Lua脚本、持久化、自动故障转移等。由于其高性能、易于使用和广泛的应用场景,Redis被广泛应用于Web应用程序、移动应用程序和其他各种领域。

redis 作为近年校招以来默认就是了解的一项技能,被诸多公司青睐,必有其过人之处:

一:Redis 特性

速度快

正常情况下,Redis 执行命令速度非常快,官方给的数字是读写性能达到:10万/秒,这里页与机器的性能有关,这里不讨论机器之间的区别,大概将redis 是速度快分为以下四点:(面试很容易问道)

  1.  Redis 的所有数据都是存放在内存中的,众所周知,访问内存的速度是访问硬盘的速度的 几百~几千倍
  2.  Redis 是使用C语言来实现的 ,而 C 语言是一种编译型语言,它的执行效率非常高,所以 Redis 的执行速度非常快。
  3.  Redis 使⽤了单线程模型,预防了多线程可能产⽣的竞争问题;这里说的单线程是指执行命令时的单线程,在 redis 6.0 版本中引入了多线程机制来处理网络和 IO
  4. 作者对于 Redis 源代码可以说是精打细磨,曾经有⼈评价 Redis 是少有的集性能和优雅于⼀⾝的开源代码。

基于键值对的数据结构服务器

⼏乎所有的编程语⾔都提供了类似字典的功能,例如:C++中的 map、Java中的 map、Python ⾥ 的 dict 等,类似于这种组织数据的⽅式叫做基于键值对的⽅式,与很多键值对数据库不同的是,Redis 中的值不仅可以是字符串,⽽且还可以是具体的数据结构,这样不仅能便于在许多应⽤场景的开发,同时也能提⾼开发效率。它提供的具体的五种数据结构,放到后面再介绍。

丰富的功能

除了 5 种数据结构,Redis 还提供了许多额外的功能:

  • 提供了键过期功能,可以⽤来实现缓存。
  •   提供了发布订阅功能,可以⽤来实现消息系统。
  •   ⽀持 Lua 脚本功能,可以利⽤ Lua 创造出新的 Redis 命令。
  •   提供了简单的事务功能,能在⼀定程度上保证事务特性。
  •   提供了流⽔线(Pipeline)功能,这样客⼾端能将⼀批命令⼀次性传到 Redis,减少了⽹络的开销。

简单稳定

Redis 的简单主要体现在三个方面:

一:redis 的源码简单,最早的版本呢只有两万行,redis 3.0 添加了集群机制也只有五万行,相对于其他数据库源码而言十分简单

二:redis 使用了单线程模型,不仅使redis 服务器处理模型变得简单,也使得客户端开发变得简单了

三: redis 不需要依赖于操作系统中的类库,redis 自己实现了事件处理的相关操作功能

但与简单相对的是 Redis 具备相当的稳定性,在⼤量使⽤过程中,很少出现因为 Redis ⾃⾝ BUG
⽽导致宕掉的情况。

客⼾端语⾔多

redis 提供了简单的 TCP 通信协议,很多编程语言可以很方便的接入到 redis ,并且由于 redis 收到广大社区和公司的认可,支持 reids的客户端也非常多,几乎覆盖了主流的编程语言。 

持久化(Persistence)

由于数据存放在内存中,这样看来数据是不安全的,一旦断电或者机器故障,重要数据就会丢失,但是 reids 提供了两种持久化方式:AOF 和 RDB ,可以将内存中的数据保存在硬盘中,这样就保证了数据的课持久性,后续会重点介绍。

主从复制 (Replication)

Redis 提供了复制功能,实现了多个相同的数据 Redis 副本,主服务器负责写,从服务器负责读;主从复制功能是分布式 redis 的基础

 高可用(High Availability)和分布式(Distributed)

Redis 提供了⾼可⽤实现的 Redis 哨兵(Redis Sentinel),能够保证 Redis 结点的故障发现和故
障⾃动转移。也提供了 Redis 集群(Redis Cluster),是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性。

二:Redis 使用场景

1. 缓存(Cache)

这是 reids 使用最多的场景,基本上所有的大型网站都在使用 redis,合理的使用缓存加速数据的访问速度,而且能够有效的降低后端服务器的压力。redis 提供了键过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。

2. 排行榜系统

redis 提供了列表和有序集合的结构,这些数据结构可以很方便的构建出各种排行榜,例如:按照热度排名的排行版,按照发布时间的排行榜等等

3. 消息队列

其实,redis 最开始是作为一个消息队列出现的,redis 提供了发布订阅和阻塞队列的功能,但是只能对于一般的消息队列功能满足,无法和其他成熟的消息队列一教高下;但最后使用 redis 做缓存却火了起来。

4. 计数器应用

通过 Redis 的计数器和有序集合,可以实时统计用户的访问量、点赞数、评论数、转发数等指标

redis 还可以作为 session 存储,将 session 存储在 reids 中,等等.......

redis 的基本介绍就到这里,下一章来讲讲redis 常见数据结构类型。

你可能感兴趣的:(Redis,redis,java,mybatis)