五分钟速成Java:揭秘Redis的奥秘

发表时间: 2018-12-18 11:44

Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念、优缺点和适用场景,想要深入的了解,还需要投入更多的时间。

什么是Redis

Redis是一个数据库,或者叫存储系统,用C语言编写,存储的数据格式是key-value。

所以我们通常把Redis称作key-value格式的非关系型数据库

Redis能做什么

我们先说说什么是缓存:缓存就是把存储在数据库(硬盘)中的数据,放到内存中,这样可以避免频繁的访问数据库;从内存中读取数据的速度,要比数据库中查询快很多;说的直白一些,缓存是为了查询更快。

而对于Redis而言,它的性能极其的优秀,可支持高并发下的读/写,还提供数据的持久化,并且还支持主从、集群等配置。

所以Redis在Web应用架构中,经常扮演了缓存这个角色,适合高速读/写的场景。

举个例子,我们在今日头条上刷新闻,有个【24小时热闻】板块,可以怎么实现?

select top 10 from 新闻 order by 阅读量 desc;

技术上是没有问题的,但是如果100万个人打开这个页面的话,那就要查询100万次数据库。

另外一种做法:定时(假如十分钟一次),查询热点新闻,缓存到Redis中,读者打开页面后,直接从Redis中取得数据,这样可以减少数据库的压力。(当然,会有页面静态化等技术,不在这里讨论)

其实很多互联网公司的网站、APP,大部分的查询都不会直接访问到数据库的。

Redis支持的数据类型

String、List、Set、Hash、ZSet;前面几个好理解,最后一个ZSet是有序的Set。

Redis到底有多快

官方说Redis每秒的查询次数可以达到10万以上(也和机器配置有关),具体的可以查看官方提供的:How fast is Redis?

Redis性能高的主要原因:基于内存、单线程(避免多线程的切换,不用锁)、非阻塞IO等。

Java怎么操作Redis

可以使用Jedis,如果项目使用到Spring的话,可以通过RedisTemplate实现对Redis的操作。

下一篇文章,我讲顺着Redis的讲解,想大家介绍一下缓存穿透、缓存雪崩、缓存击穿等概念,以及应对的策略。

如果大家有想了解什么技术,也也可以留言,我后续整理为大家讲解。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。