(一)初始redis

一 什么是redis

Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库

二 redis的特性

  1. 速度快
  • 数据存储在内存中,降低了磁盘io,极大提高了查询效率
  • 单线程架构,减少了线程切换的开销
  1. 丰富的数据结构
  • 支持字符串、哈希、列表、集合、有序集合、BitMaps(位图)、HyperLogLog(超小内存唯一值计数)、GEO(地理信息定位)
  1. 功能丰富
  • 发布订阅、Lua脚本、事务、pipeline
  1. 简单稳定
  • 源码少,早期版本只有 2 万行左右,3.0 版本之后增加了集群特性,代码增至 5 万行左右
  • 单线程模型
  • 不依赖操作系统中的类库
  1. 客户端语言多
  • 支持 Java、php、python、ruby、lua、nodeJS…
  1. 持久化
  • Redis 所有数据保存在内存当中,对数据的更新将异步地保存到磁盘上
  1. 主从复制
  2. 高可用、分布式

三 Redis典型使用场景

Redis可以用来做什么

  1. 缓存
  • 缓存基本在所有的大型网站得以使用,合理的使用缓存不经可以加快数据的访问速度,还能有效的降低后端数据资源的压力,Redis提供了键值对的过期时间设置,同时也提供了灵活控制最大内存和内存溢出后的淘汰策略,是目前比较主流的缓存架构
  1. 排行榜
  • Redis提供了列表和有序集合数据结构,可以和方便的实现各种排行榜
  1. 消息队列系统
  • Redis提供了发布和订阅和阻塞队列的功能,轻量级的消息队列系统,一些对于消息队列功能不是有很强要求的系统,可以通过redis来实现消息队列
  1. 计数器
  • 比如微博的转发数、评论数、点赞数等,为了保证数据的实时性,每一次都要做加 1 的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis 天然支持计数功能而且计数的性能也非常好,是计数器系统的重要选择。
  1. 分布式锁

Redis不可以用来做什么

  • 数据规模来看,Redis是将数据存放在内存中的,数据量非常大的是不适合存储在redis中
  • 数据的冷热程度,Redis适合存放一些热点数据,冷数据反而造成一些内存的浪费

四 为什么单线程Redis还这么快

  • redis将所有的数据存放在内存中,内存的读取非常的快,采用多线程的话,线程的切换反而影响Redis的效率
  • 非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,不在网络I/O上浪费过多时间

注意:因为是单线程,同一时间只运行一条命令,所以它拒绝长(慢)命令,单线程对于每个命令的执行时间是有要求的。如果命令执行过长,会造成其他命令的阻塞,对于 Redis 这种高性能的服务来说是致命的。

猜你喜欢

转载自blog.csdn.net/Instanceztt/article/details/128224561
今日推荐