天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。
有人说,组 CP,除了要了解她外,还要给机会让她了解你。
那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提升性能。
我遵守 BSD 协议,由意大利人 Salvatore Sanfilippo 使用 C 语言编写的一个基于内存实现的键值型非关系(NoSQL)数据库。
我是一个内存数据结构存储、可作为数据库、缓存、消息队列、流处理引擎,速度快是我的特点。
根据官方数据,Redis 的 QPS 可以达到约 100000(每秒请求数)。
我提供了 String(字符串)、Hashes(散列表)、Lists(列表)、Sets(无序集合)、Sorted Sets(可根据范围查询的排序集合)、Bitmap(位图)、HyperLogLog、Geospatial (地理空间)和 Stream(流)等数据结构。
数据结构的使用技法和实现原理是你核心筑基必经之路,好好修炼。
除此之外,我还具有主从复制、Lua 脚本、LRU 淘汰机制,事务和不同级别的磁盘持久化功能,并通过 Redis Sentinel(哨兵)和 Redis Cluster(Redis 集群)实现高可用,这部分内容,重中之重,高手必备。
我还支持一些原子操作,支持异步复制实现快速非阻塞同步和自动重连,另外需要注意的是,推荐你在 Lunix /Unix 系统上部署,官方并没有在 Windows 系统上构建安装包。
1.1.1 Redis 能干啥
程许媛:“Redis 你说了这么多?你能干啥?别王婆卖瓜,自卖自夸。”
缓存
这是我被使用的最多的场景,能极大提升应用程序的性能。当单个 MySQL 读写压力比较大,场景是读多写少的时候,把热点数据存储在更快的存储中,也就是 Redis。
读取数据
-
先从缓存中读取数据是否命中。
-
缓存未命中,则查询数据库获取数据,并把数据写到 Redis