目录

盛赞Redis

Redis特性

redis使用场景

redis可以做什么?

redis不可以做什么?

关于用好redis的两点建议

本章重点回顾


写在前面:

想必在写项目的过程中,我们很多时候都会用到redis,那么redis到底是个啥玩意儿?今天我们就来浅浅聊一下吧。

盛赞Redis

什么是redis?redis实际上是一种基于键值对的(key-value)NoSQL数据库。redis中的值可以是String、hash、list、set、zset等多种数据结构和算法组成,因此可以满足很多的应用场景。另外,redis还可以将内存中的数据保存到硬盘上,这样,如果突然断电或系统发生故障,redis可以保证数据不会丢失。

Redis特性

那么redis都有哪些特性呢?

1、速度快。

为啥redis执行起来速度那么快?首先,redis的数据是保存在内存中的。其次,redis底层是基于C语言实现的。然后,redis使用的是单线程架构,这样就避免了多线程的竞争或者死锁问题的出现。最后,不得不说一下redis的源码了,redis的源码可以说是集性能与优雅于一身。大家可以阅读下, 看看到底有多优雅。

2、基于键值对的数据结构服务器。

redis提供了五种数据结构:字符串、哈希、列表、集合、有序集合。

3、丰富的功能

键过期功能,可以用来实现缓存;发布订阅功能,可以用来实现消息系统;支持Lua脚本功能,可以利用其创造出新的redis命令;简单的事务功能,能在一定程度上保证事务特性;流水线功能,客户可以一次性的把一批功能传给redis,节省了网络的开销。

4、简单稳定

首先,是因为redis的源码很少,redis最初的版本的源码只有两万行,慢慢发展到现在已经是五万行了,其实也不算多,所以这一点对于开发人员是很友好的,便于阅读和理解。其次,redis使用的是单线程模型。最后,redis并不依赖于操作系统中的类库。从以上三点来看,redis是比较简单的,但是这并不代表redis不稳定。

5、客户端语言多

支持redis的语言有Java、PHP、python,C++等。

6、持久化

一般来看,数据放在内存中是不安全的,一旦发生断电或其他故障,数据就有可能丢失。因此,redis提供了两种持久化的方式:AOF和RDB。可以将数据从内存中保存到硬盘中,这样就实现了数据的持久性。

7、主从复制

redis提供了复制功能,复制功能是分布式的基础。

redis使用场景

redis可以做什么?

1、缓存

几乎所有的大型网站都在使用缓存设计。缓存不仅可以加快数据的访问速度,还能有效减轻后端的压力。redis提供了键值过期时间设置,还提供了灵活控制最大内存和内存溢出后的淘汰策略。合理的使用缓存可以很好的为一个网站保驾护航。

2、排行榜系统

redis的数据结构中有列表和有序集合,这些可以帮助构建排行榜系统。

3、计数器应用

比如在csdn上,我们可以任意的浏览免费博客,如果点进去了,那么浏览量就会加一。除此之外,我们还可以给博客点赞、收藏,这样的操作实际上都是计数操作。redis天然支持计数功能,而且性能也非常好。

4、社交网络

社交性质的网站通常访问量比较大, 而且传统的关系型数据库不太适合保存这种类型的数据,但是redis可以。

5、消息队列系统

redis提供了发布订阅功能和阻塞队列的功能。

redis不可以做什么?

我们首先要明确的一点就是,redis并不是完美的。有的问题适合用redis来解决,但是同样的,有些问题并不适合用redis来解决。至于哪些问题适合用于redis哪些问题不适合用于redis,可以从数据规模和数据冷热两方面来分析。

有的数据规模大,有的数据规模小,通过前面我们知道,redis的数据是放在内存中,在这种情况下,如果redis的数据量过大,那么经济成本是相当高的。

站在数据冷热的角度来看待这个问题,数据分为冷数据和热数据。热数据需要我们频繁的操作,冷数据不需要。对于视频来说,视频信息就是热数据,而用户的观看视频的记录就是冷数据。而redis适合存放热数据,如果长期存放冷数据,实际上是对于内存的一种浪费。

关于用好redis的两点建议

1、不要把redis当作黑盒使用

虽然redis是一种键值型的NoSQL数据库,但并不意味着redis就是get、set等大量的重复操作,开发人员不仅要会使用一些常用的API,还要深入理解redis的底层原理,应该把redis当成白盒来看待,要深知redis的逻辑结构。在公司内人员空缺时,开发人员也极其有可能会担任运维的角色。客观来看,实际这是一把双刃剑。好处就是,开发人员有更多的机会可以深入了解redis;而坏处就是,如果开发人员对于redis底层原理并不熟悉,操作失误,容易造成线上事故。

2、阅读源码

作为开发人员,我们不仅要能会用某一开发工具,我们还要深入到底层源码的研究。这样,不仅我们可以更好地掌握的一门开发工具,还有利于提高我们的编程水平。因为我们在阅读源码的过程中,实际上相当于在跟工具的开发者交流,和读书的道理是一样的。

本章重点回顾

1)redis的七个特性:速度快,基于键值对的数据库、丰富的功能、简单稳定、客户端语言多、持久化、主从复制

2)redis并不完美,有些场景是不适合用redis来开发的。

3)开发运维结合以及阅读源码时学好redis的重要方法。

《Redis开发与运维》读书笔记--初识Redis(一)相关推荐

  1. Redis理解内存《Redis开发与运维读书笔记》

    文章目录 内存的消耗 内存划分 内存管理 内存优化 内存的消耗 可以使用info memory 查看内存消耗. 内存划分 对象内存 = sizeof(key) + sizeof(value) 应避免使 ...

  2. 【Redis】《Redis 开发与运维》笔记-Chapter12-开发运维的“ 陷阱”

    十二.开发运维的" 陷阱" 1.Linux配置优化之内存分配控制 1)vm.overcommit_memory Linux操作系统对大部分申请内存的请求都回复yes,以便能运行更多 ...

  3. Redis开发与运维 必备-电子书

    Redis开发与运维电子书 fulei出版 链接: https://pan.baidu.com/s/12rlHhOKP7_72GE8a74lN1g 密码: eep2 复制这段内容后打开百度网盘手机Ap ...

  4. 「Redis开发与运维」读书笔记

    第一章 初识Redis Redis的8个重要特性 速度快 内存存储数据 C语言实现 单线程架构,避免多线程竞争问题 Redis源码优化好 基于键值对的数据结构服务器 Redis 值可支持多种数据结构, ...

  5. <Redis开发与运维>一书阅读笔记记录

    文章目录 前言 第1章:初始redis 盛赞redis redis特性 redis使用场景 第2章:API的理解和使用 预备知识 全局命令 数据结构和内部编码 单线程架构 字符串 命令 内部编码 典型 ...

  6. Redis开发与运维笔记_1 初识2 API

    目录 概述 第1章 初识Redis 1.1 盛赞Redis 1.2 Redis特性 1.3 配置.启动.操作.关闭Redis 第2章 API的理解和使用 2.1 预备 2.1.1 全局命令 2.1.2 ...

  7. 读书笔记:redis开发与运维 基础篇

     redis特性    1>速度快:redis所有数据都是存放在内存中,是redis速度快的主要原因,是有c编写,一般来说用c编写的程序距离操作系统近,执行速度更快,非阻塞I/O,使用epoll ...

  8. 《Redis开发与运维》各章重点回顾

    第 1 章 初识 Redis Redis 8个特性:速度快.基于键值对的数据结构服务器.功能丰富.简单稳定.客户端语言多.持久化.主从复制.支持高可用和分布式. Redis 不是万金油,有些场景不适合 ...

  9. Redis 开发与运维

    Getting Start 高性能 性能优势的体现 C语言实现的内存管理 epoll的I/O多路复用技术+IO连接/关闭/读写通过事件实现异步的非阻塞IO TCP协议 单线程架构,不会因为高并发对服务 ...

最新文章

  1. Zend Studio 12 windows 无限期试用
  2. android 将byte[]保存到手机
  3. php接收键盘事件,js获取键盘事件的方法实例
  4. go编译库给c语言函数返回值,go语言 函数return值的几种情况
  5. python读取配置文件获取所有键值对_python读取配置文件
  6. asp.net面试的概念知识
  7. Android 笔记 android 7.0 单独编译framwork不生效的解决
  8. 超实用Mac软件分享
  9. 只用两个函数实现事务的设计模式!
  10. Flask-SQLALchemy查询
  11. python 参数带星号_python 函数参数的传递(参数带星号的说明)
  12. ecmall挂件开发实例二(转)
  13. 数据结构系列之大话数据结构
  14. IMX6Q开发板使用USB直接连接HP LaserJet 1020 plus打印机打印。
  15. 【机器学习-周志华】学习笔记-第十章
  16. 在知网查重复率时你入坑了吗?
  17. Less 颜色操作函数Mix的计算方法
  18. 【C语言】基本算法系列1:数字转字符串
  19. getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output问题解决
  20. 《程序员脱发指南》--饮食篇

热门文章

  1. 程序员你有资格骄傲么?
  2. win10创建新的计算机用户名和密码忘了,win10访问局域网电脑需要用户名和密码设置方法...
  3. H5渠道、广告平台、地推、AppStore一站式数据监控平台
  4. 加固技术一路“升级打怪”,会封顶于第五代虚机源码保护技术吗?
  5. initrdinit进程
  6. 牛顿法(Newton Methods)、阻尼牛顿法和拟牛顿法
  7. Oracle like 优化
  8. 帮我用matlab写一段copula函数预测
  9. 数字图像处理期末大作业-美图秀秀
  10. 2019招聘计算机,2019兴业银行招聘计算机模拟试题及答案