《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的重要方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值