前言

当结束Java和数据库的学习以后,你就会接触到Redis这个词,我第一次听到的时候脑海里就会浮现这两个问题:

什么是Redis?为什么我们要用Redis?

我了解完以后,写出来帮助大家能够更快的认识它。


我们先来看它的定义:

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

换句话说,Redis就像是一个HashMap,不过不是在JVM中运行,而是以一个独立进程的形式运行。
一般说来,会被当作缓存使用。 因为它比数据库(mysql)快,所以常用的数据,可以考虑放在这里,这样就提高了性能。

总归一个字:快!

快在哪里呢?

这个问题在大并发,高负载的网站中必须考虑.redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此Redis的的的在性能上对比其他基于硬盘存储的数据库有非常明显的优势。

项目中使用Redis的的的,主要是从两个角度去考虑:性能状语从句:并发。当然,Redis的的的还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件代替,并不是非要使用Redis的的的。因此,这个问题主要从性能并发两个角度去答。

1.性能:

我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存,这样,后面的请求就去缓存中读取,请求使得能够迅速响应

2.并发

在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用的的Redis的做一个缓冲操作,让请求先访问到的Redis的的,而不是直接访问数据库。

redis的优势

1,运行在内存,速度快官方号称支持并发11瓦特读操作,并发8瓦特写操作,可以说是相当彪悍了。

2,数据虽在内存,但是提供了持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务

3,支持数据结构丰富(string(字符串),list(链表),set(集合),zset(sorted set - 有序集合))和Hash(哈希类型,md5加密出来的那个串)

注意与补充

Redis的缺点

是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。Redis受限于特定的场景,专注于特定的领域之下,速度相当之快,目前还未找到能替代使用产品。

Redis不是什么?从两个方面来做下对比

1. 不是sql server、mySQL等关系型数据库,主要原因是:

redis目前还只能作为小数据量存储(全部数据能够加载在内存中) ,海量数据存储方面并不是redis所擅长的领域。

设计、实现方法很不一样.关系型数据库通过表来存储数据,通过SQL来查询数据。而Redis通上述五种数据结构来存储数据,通过命令 来查询数据。

2. 不是Memcached等缓存系统,主要原因有以下几个:

  • 网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能。
  • 内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache。
  • 数据的一致性方面:Memcached提供了cas命令来保证.而Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断。
  • 存储方式方面:Memcached只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能。

一句话小结:Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

redis是什么_什么是Redis?为什么我们要用Redis?相关推荐

  1. redis 管理工具_「程序猿同事的分享」redis cluster管理工具redis-trib.rb详解

    概述 redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib ...

  2. redis存储图片_一不小心肝出了4W字的Redis面试教程

    本文脑图 redis基本数据结构 本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西客定要一点一点的吃透它. 这是关于Redis五种数 ...

  3. java redis使用卡死_记一次找因 redis 使用不当导致应用卡死 bug 的过程

    原标题:记一次找因 redis 使用不当导致应用卡死 bug 的过程 作者:小木 my.oschina.net/xiaomu0082/blog/2990388 首先说下问题现象:内网sandbox环境 ...

  4. csrediscore访问redis集群_搭建文档 | centos7.6环境下redis5.0.8集群搭建

    " 本文作者:墨篱弦 " 一.做基础配置 a) 首先创建3个空文件 mkdir -p /server/redis_cluster/7001/datamkdir -p /server ...

  5. aliyun redis 链接超时_用redis做异步队列,原来还可以这样

    Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列. 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列: 另外,做消息队列的其他特性例如FIF ...

  6. redis序列化_实例讲解Springboot以Template方式整合Redis及序列化问题

    1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...

  7. 查看redis缓存大小_一个 bug 引发了服务器崩溃,对应 redis 的 key 回收原理你清楚了吗?...

    1 背景 项目中使用了 redis 做旁路缓存.读请求到来时,有以下操作:1.检查缓存,有则返回2.没有则读取数据库,将结果回写到缓存中. 写请求到来时,有以下操作:1.更新数据库 2.更新缓存(实际 ...

  8. redis 主从配置_应用 | Redis实现 主从,单例,集群,哨兵,配置应用

    小小经过一天的休整 公众号更新规则:每周六将会停更一次,进行短期的休整,其余时间继续每天一更. 思维导图如下 Redis 主从配置 这里配置Redis主从 什么是主从 主从复制,是指把一台Redis服 ...

  9. redis 后台运行_第一章 1.3Linux下安装Redis

    1.3.2 Linux下安装Redis 第一步: 去官网下载安装包 ,传送门 第二步: 上传到Linux服务器,解压redis的安装包 tar -zxvf redis-6.0.8.tar.gz 这里我 ...

  10. linux 查redis状态_干货:用案例代码详解Redis中的事件驱动模型

    Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件. 文件事件 时间事件 下面就会介绍这两种事件的实现原理. 推荐阅读:我凭借这份pdf拿下了蚂蚁金服.字节跳动.小米等大厂的offe ...

最新文章

  1. 使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery
  2. 【转】设计模式学习笔记之命令模式
  3. *printf()格式化串安全漏洞分析(下)
  4. Facebook 又摊上事了,数亿用户被波及!
  5. 【论文串烧】基于特定实体的文本情感分类总结(PART I)
  6. 如何将jar包加入到Maven本地仓库
  7. 01--QT GUI视频教程
  8. 拼多多商品详情接口、拼多多商品基本信息、拼多多商品属性接口
  9. 苹果手机添加 qq 邮箱的方法
  10. 测试用例之QA有话说
  11. python输出百分比
  12. 002-CentOS7 固定IP
  13. LaText Error:Environment aligned undefined.
  14. java实现调用打印机
  15. 如何嫁给年入百万的阿里人?
  16. mysql免安装版,遇到msvcr120dll文件丢失错误的解决方案
  17. PHP变量说法不正常是,关于PHP变量的说法中正确的是(? ?)。
  18. git 报错fatal: cannot create directory at ‘../../..‘: Permission denied
  19. 编译ASP.NET网站项目,以及部署网站到本地localhost服务器上实现独立运行
  20. IE浏览器主页更改问题(在浏览器Internet的属性里怎么也修改不成功)

热门文章

  1. spring hsqldb_在Spring中嵌入HSQLDB服务器实例
  2. 使用React,Spring Boot和用户身份验证构建CRUD应用程序
  3. HotSpot的-XshowSettings标志的简单性和价值
  4. ejb 2.0 3.0_Java EE 6测试第I部分– EJB 3.1可嵌入API
  5. 通过Java 8流使用Oracle AQ
  6. Java和甜蜜的科学
  7. Java开发人员访谈的MindMap
  8. 使用JUnit的ExpectedException和@Rule测试自定义异常
  9. 使用Spring 3 MVC处理表单
  10. axios代理跨域 cli4_跨域本质及解决办法