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 是速度快分为以下四点:(面试很容易问道)
- Redis 的所有数据都是存放在内存中的,众所周知,访问内存的速度是访问硬盘的速度的 几百~几千倍
- Redis 是使用C语言来实现的 ,而 C 语言是一种编译型语言,它的执行效率非常高,所以 Redis 的执行速度非常快。
-
Redis 使⽤了单线程模型,预防了多线程可能产⽣的竞争问题;这里说的单线程是指执行命令时的单线程,在 redis 6.0 版本中引入了多线程机制来处理网络和 IO
-
作者对于 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 自己实现了事件处理的相关操作功能
客⼾端语⾔多
持久化(Persistence)
由于数据存放在内存中,这样看来数据是不安全的,一旦断电或者机器故障,重要数据就会丢失,但是 reids 提供了两种持久化方式:AOF 和 RDB ,可以将内存中的数据保存在硬盘中,这样就保证了数据的课持久性,后续会重点介绍。
主从复制 (Replication)
Redis 提供了复制功能,实现了多个相同的数据 Redis 副本,主服务器负责写,从服务器负责读;主从复制功能是分布式 redis 的基础
高可用(High Availability)和分布式(Distributed)
二:Redis 使用场景
1. 缓存(Cache)
这是 reids 使用最多的场景,基本上所有的大型网站都在使用 redis,合理的使用缓存加速数据的访问速度,而且能够有效的降低后端服务器的压力。redis 提供了键过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。
2. 排行榜系统
redis 提供了列表和有序集合的结构,这些数据结构可以很方便的构建出各种排行榜,例如:按照热度排名的排行版,按照发布时间的排行榜等等
3. 消息队列
其实,redis 最开始是作为一个消息队列出现的,redis 提供了发布订阅和阻塞队列的功能,但是只能对于一般的消息队列功能满足,无法和其他成熟的消息队列一教高下;但最后使用 redis 做缓存却火了起来。
4. 计数器应用
通过 Redis 的计数器和有序集合,可以实时统计用户的访问量、点赞数、评论数、转发数等指标
redis 还可以作为 session 存储,将 session 存储在 reids 中,等等.......
redis 的基本介绍就到这里,下一章来讲讲redis 常见数据结构类型。