《Redis开发与运维》读书笔记--初识Redis(一)
目录
盛赞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(一)相关推荐
- Redis理解内存《Redis开发与运维读书笔记》
文章目录 内存的消耗 内存划分 内存管理 内存优化 内存的消耗 可以使用info memory 查看内存消耗. 内存划分 对象内存 = sizeof(key) + sizeof(value) 应避免使 ...
- 【Redis】《Redis 开发与运维》笔记-Chapter12-开发运维的“ 陷阱”
十二.开发运维的" 陷阱" 1.Linux配置优化之内存分配控制 1)vm.overcommit_memory Linux操作系统对大部分申请内存的请求都回复yes,以便能运行更多 ...
- Redis开发与运维 必备-电子书
Redis开发与运维电子书 fulei出版 链接: https://pan.baidu.com/s/12rlHhOKP7_72GE8a74lN1g 密码: eep2 复制这段内容后打开百度网盘手机Ap ...
- 「Redis开发与运维」读书笔记
第一章 初识Redis Redis的8个重要特性 速度快 内存存储数据 C语言实现 单线程架构,避免多线程竞争问题 Redis源码优化好 基于键值对的数据结构服务器 Redis 值可支持多种数据结构, ...
- <Redis开发与运维>一书阅读笔记记录
文章目录 前言 第1章:初始redis 盛赞redis redis特性 redis使用场景 第2章:API的理解和使用 预备知识 全局命令 数据结构和内部编码 单线程架构 字符串 命令 内部编码 典型 ...
- 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 ...
- 读书笔记:redis开发与运维 基础篇
redis特性 1>速度快:redis所有数据都是存放在内存中,是redis速度快的主要原因,是有c编写,一般来说用c编写的程序距离操作系统近,执行速度更快,非阻塞I/O,使用epoll ...
- 《Redis开发与运维》各章重点回顾
第 1 章 初识 Redis Redis 8个特性:速度快.基于键值对的数据结构服务器.功能丰富.简单稳定.客户端语言多.持久化.主从复制.支持高可用和分布式. Redis 不是万金油,有些场景不适合 ...
- Redis 开发与运维
Getting Start 高性能 性能优势的体现 C语言实现的内存管理 epoll的I/O多路复用技术+IO连接/关闭/读写通过事件实现异步的非阻塞IO TCP协议 单线程架构,不会因为高并发对服务 ...
最新文章
- Zend Studio 12 windows 无限期试用
- android 将byte[]保存到手机
- php接收键盘事件,js获取键盘事件的方法实例
- go编译库给c语言函数返回值,go语言 函数return值的几种情况
- python读取配置文件获取所有键值对_python读取配置文件
- asp.net面试的概念知识
- Android 笔记 android 7.0 单独编译framwork不生效的解决
- 超实用Mac软件分享
- 只用两个函数实现事务的设计模式!
- Flask-SQLALchemy查询
- python 参数带星号_python 函数参数的传递(参数带星号的说明)
- ecmall挂件开发实例二(转)
- 数据结构系列之大话数据结构
- IMX6Q开发板使用USB直接连接HP LaserJet 1020 plus打印机打印。
- 【机器学习-周志华】学习笔记-第十章
- 在知网查重复率时你入坑了吗?
- Less 颜色操作函数Mix的计算方法
- 【C语言】基本算法系列1:数字转字符串
- getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output问题解决
- 《程序员脱发指南》--饮食篇
热门文章
- 程序员你有资格骄傲么?
- win10创建新的计算机用户名和密码忘了,win10访问局域网电脑需要用户名和密码设置方法...
- H5渠道、广告平台、地推、AppStore一站式数据监控平台
- 加固技术一路“升级打怪”,会封顶于第五代虚机源码保护技术吗?
- initrdinit进程
- 牛顿法(Newton Methods)、阻尼牛顿法和拟牛顿法
- Oracle like 优化
- 帮我用matlab写一段copula函数预测
- 数字图像处理期末大作业-美图秀秀
- 2019招聘计算机,2019兴业银行招聘计算机模拟试题及答案