0°

Redis是什么?

Redis作为高性能数据库得到广泛应用,但它的原理和应用你知道吗?

一.简介

Redis是一款开源的、高性能的键-值存储。它常被称作是一款数据结构服务器、缓存服务器。Rredis属于非关系型数据库和Memcached类似,Redis也是一种key-value型存储系统。

当值支持的主要数据类型为:

  • 字符串(strings)类型
  • 哈希(hashes)
  • 列表(lists)
  • 集合(sets)
  • 有序集合(sorted sets)

同时Redis可以进行持久化RDB、AOF(将数据存到硬盘),意味着不仅仅可以作为高速缓存服务器,也可以作为数据库使用。

二.原理

redis命令结构

file

  • 1.客户端发送命令后,Redis服务器将为这个客户端链接创造一个’输入缓存’,将命令放到里面。
  • 2.再由Redis服务器进行分配挨个执行,顺序是随机的,这将不会产生并发冲突问题,也就不需要事物了。
  • 3.再将结果返回到客户端的’输出缓存’中,输出缓存先存到’固定缓冲区’,如果存满了,就放入’动态缓冲区’,客户端再获得信息结果。

如果数据是写入命令,例如set name:1 zhangsan方式添加一个字符串Redis将根据策略,将这对key:value来用内部编码格式存储。好处是改变内部编码不会对外有影响,正常操作即可,同时不同情况下存储格式不一样,发挥优势。

Redis高性能原因

1.基于内存的访问,非阻塞I/O,Redis使用事件驱动模型epoll多路复用实现,连接、读写、关闭都转换为事件不在网络I/O上浪费过多的时间

2.单线程避免的高并发的时候,多线程有锁的问题和线程切换的CPU开销的问题。虽然是单线程的,我们还可以通过多实例来弥补。

3.使用C语言编写,更好的发挥服务器性能,并且代码简洁,性能高

三.特点

  • Redis支持多种数据类型,适应更多的场景需求。
  • 支持发布订阅,管道
  • 设置 TTL存活时间,到期自动删除
  • 可以执行lua脚本
  • 提供了简单的事务功能, 能在一定程度上保证事务特性。
  • 提供了流水线(Pipeline) 功能, 这样客户端能将一批命令一次性传到 Redis, 减少了网络的开销。
  • 可以使用内存做持久化,这个功能相当于 Memcached
  • 可以将数据复制到任意数量的从服务器。

四.应用场景

缓存

1.Redis提供了键值过期时间设置

2.提供了灵活控制最大内存和内存溢出后的淘汰策略

可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航

社交网络

赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。

五.信息

  • 默认端口:TCP6379
  • 编写语言:c
  • 启动redis:redis-server
  • redis客户端:redis-cli
  • redis基准测试工具:redis-benchmark
  • AOF文件检测和修复工具:redis-check-aof
  • ADB文件检测和修复工具:redis-check-dump
  • 启动哨兵:redis-sentinel

六.特色

Redis在奇数版本为非稳定版本,例如2.7,3.1。如果为偶数则为稳定版本,例如3.2,3.4

0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论