从头认识redis详解

从头认识redis详解_第1张图片

什么是redis

redis是key-value的nosql数据库,比一般的nosql数据库支持更多的数据类型。list,string,set等等,redis用处就多了。而且主要的是redis是基于内存存放数据的,导致它读写的性能肯定比较快,同时,redis支持持久化到硬盘上,这样的话,断点等突发情况就可以恢复数据。其外,redis还提供了发布订阅,缓存过期,事务,lua脚本执行等功能

redis的应用

从头认识redis详解_第2张图片

缓存

大家在平时的工作中,用的最多的肯定是redis缓存了。在数据库的前面加缓存,降低数据库的压力,提高了接口响应速度。

计数器

redis可以用来做浏览量,点赞量等这种计数的。因为它基于内存,所以效率很高,然后异步持久化到数据库中即可

排行榜

在很多的时候,系统会进行某种排名,这个时候就可以利用redis的列表,有序集合数据来进行排名操作

关注

社交网络中的关注,相互关注等这种关系,推送,喜好等

消息队列

redis包含简单的发布订阅功能,可以满足用户少简单的推送功能

分布式锁

在高并发的系统中,用的最多的肯定是redis分布式锁了,redission实现的,效率高稳定

实际项目中用到的:

  • redis用来存储token
  • 记录登录失败次数
  • 缓存省市区数据
  • 下单等高并发的分布式锁
  • 常用数据字典和系统配置

数据结构

redis有5中常用的数据结构

string 缓存,计数,token

hash 缓存的对象,用户信息等

list 消息队列,字典信息

set 关注

sortedset 排行榜

redis快的原因

  • 基于内存存储的
  • 单线程 redis6后改为多线程
  • io的多路复用的机制
  • c语言开发的进行大量优化过,性能更高

redis的性能比mysql快几十倍,十几万的/s的并发

什么是多路复用功能

比如你是个讲师,然后给学生出一道题,做完题之后,你要检查。这个时候,你可以占到讲台上,谁做完了谁举手,然后你去检查,然后回到讲台,重复这样的操作。这就是多路复用

从头认识redis详解_第3张图片

因为这个多路复用的机制,才可以充分利用整个进程和线程,提高处理效率问题

redis最初单线程的原因

原因是早期嫌太麻烦放弃了多线程,faq提到redis6之后采用多线程的机制,除了主线程之外,还有其他的线程处理一些较为缓慢的操作,比如清理数据,无用的连接,大key删除等问题

从头认识redis详解_第4张图片

多线程并不是并行执行的,只是多线程处理读写和协议解析问题,命令还是单线程执行的,解决了网络io,提升了io的读写能力

redis的持久化

redis二种持久化的方式:rdb和aof

rdb是把数据生成快照保存到硬盘上,分为手动触发和自动触发,rdb是个二进制的文件,只要rdb的文件在,就可以恢复到原来的状态,但是rdb方式会丢失少量的数据,rdb生成的时候,会阻塞当前服务器知道rdb备份完成。

aof是以命令的方式存储到文件中,文件中是一行行的命令组成的。重启时重新之心aof文件的命令完还原。目前是redis的主流方式

aof和rdb的优缺点

rdb的优点是:全量复制适合备份,恢复速度快 缺点是:间隔一段时间来进行持久化操作,间隔时间内可能发生故障,导致数据丢失,实时性比较差,存在版本的兼容问题

aof优点:实时性好, redis-check-aof 命令解决数据一致性的问题,缺点:aof文件比rdb的文件大,恢复速度慢,启动效率低

aof和rdb怎么选择

如果要达到数据安全性的话,二种方式同时用。如果可以接受丢失数据的情况下,用rdb的方式

redis混合持久化学习

你可能感兴趣的:(缓存,redis,缓存,数据库)