乐趣区

关于java:进击Redis一初识Redis

遇见

 依稀记得那年还是个刚刚入行的少年、那时头发还是那么浓密、那时还没有格子寸衫 …,想到以前那浓密的毛发,眼角总是泛着泪花(别打了,别打了,我写)。
入职后的几天,头顶依稀还有几根头发的好哥哥过去就跟我说,这里有个老我的项目,你相熟一下,今天开始接新需要开发。都不给我反驳的余地,那我能怎么办呢,那还用说嘛,萌新三连(好的、好的、好的),像极了我的前领导在领导前的样子(心愿不要被他看到吧)。
含着泪关上我的项目,一个个新的技术扑脑而来,啊,我吐了。然而当我面向百度输出 Redis 的时,我震惊了,从此头也不回的走上了这条掉头发之路。
反手就是一个 Antirez(Redis 作者)yyds。

初识

 Redis 是一种基于 键值对(key-value) 的 NoSQL 数据库,与很多键值对数据库不同的是,Redis 中的值能够是 string(字符串)、hash(哈希)、list(列表)、set(汇合)、zset(有序汇合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息定位) 等多种数据结构和算法组成,因而 Redis 能够满足很多的利用场景。
而且因为 Redis 所有数据操作都在内存中,所以它的读写性能十分惊人。不仅如此,Redis 还能够将内存的数据利用快照和日志的模式保留到硬盘上,这样在产生相似断电或者机器故障的时候,内存中的数据不会“失落”。除了上述性能以外,Redis 还提供了键过期、公布订阅、事务、流水线、Lua 脚本等附加性能。

小故事

 又到了我最喜爱的环节。2008 年,Redis 的作者 antirez(Salvatore Sanfilippo)在开发一个叫 LLOOGG 的网站时,须要实现一个高性能的队列性能,最开始是应用 MySQL 来实现的,但起初发现无论怎么优化 SQL 语句都不能使网站的性能进步下来,再加上本人囊中羞涩,于是他决定本人做一个专属于 LLOOGG 的数据库,这个就是 Redis 的前身。
起初,Salvatore Sanfilippo 将 Redis1.0 的源码凋谢到 GitHub 上,可能连他本人都没想到,Redis 起初如此受欢迎。

相干链接

官方网站
作者博客
源码地址

个性

1. 读写速度快

 官网给出的数字是读写性能能够达到 10 万 / 秒,当然这也取决于服务器的配置。
Redis 读写性能高的起因:
1). 基于内存操作。
2). 用 C 语言实现,C 语言实现的程序“间隔”操作系统更近,执行速度绝对会更快。
3). 应用单线程加上 I/O 多路复用模型,防止了多线程环境下产生的并发竞争问题。
4). 作者本身对源码严格的打磨。代码量较其余数据库来说量很小。

2. 基于键值对存储

 依据 key-value 的映射关系生成相似于字典的性能,比方像 Java(世界上最好的语言,没有之一)中的 Map。
而且 Redis 中的值不仅能够是字符串,还能够是具体的数据结构或者算法

3. 多样化的性能

 除了提供罕用的 5 中根底数据类型,还提供以下的性能:
1). 键过期,能够用来实现缓存、分布式锁等。
2). 提供了根底的公布订阅能力,能够用来实现音讯零碎,然而个别零碎都会抉择用像 rabbitMQ 专门的消息中间件。
3). 反对 Lua 脚本性能,像 Redisson 分布式锁框架底层用的就是 Lua 脚本来实现的。
4). 反对长久化,Redis 自身是基于内存的,所以提供了 AOF 和 RDB 两种形式来长久化。
5). 反对高可用,Redis 集群模式提供了主从复制、哨兵模式和 cluster 模式,当然主从和哨兵个别是配合应用的。
6). 等等(狗头护脸)…. 后续都会一个个来的,好哥哥们别急

应用场景

1. 能做什么

1). 缓存,这个性能是绝大多数零碎用的次要起因,能够缓存热点数据,摊派数据库压力。
2). 排行榜零碎,提供列表和有序汇合,能够正当利用这种数据结构实现排行。
3). 计数器利用,比方像统计访问量或者播放量,Redis 人造反对计数性能而且计数的性能也十分好。
4). 社交网络,赞 / 踩、粉丝、独特好友 / 爱好、推送、下拉刷新等是社交网站的必备性能,Redis 提供的数据结构能够绝对比拟容易地实现这些性能。
5). 音讯队列零碎,基于 Redis 公布订阅,能够实现根底的音讯队列性能,不过还是倡议用专门的消息中间件。

2. 不能做什么

 Redis 是基于纯内存操作的,虽说当初的内存曾经足够便宜,然而数据规模量很大时,应用 redis 存储的话经济老本会很大。另外,如果是基于主从复制来做高可用的话,从库拷贝了主库的全量数据,也就意味着能存储的数据量是无限的。
其次的话,在冷热数据(拜访)上来讲,存储热数据能够进步零碎的吞吐量,而如果存储冷数据的话就基本上是对于内存的一种节约。

碎碎念

 在 2020 年的最初一个月,突发萌发了写博客想法。也是通过了一系列的挣扎之后还是决定要保持写下去。
一方面在写博客的过程中能发现本身对于某个知识点的盲区,加深技术点的了解,进步技术能力的深度。
其次学习、了解一个技术点和把这个技术点通过文字输入反馈进去齐全不一样,能很大水平上的进步我的语言表达能力。
最初通过分享能和很多巨佬(后续就叫好哥哥)进行碰撞(思维,精神打不过啊),每每碰撞后总是醍醐灌顶,一个字那就是妙啊。
而后后续会分享 Redis 这一块的货色,根本就是从 0 到 1 这种,夸大点说就是从入门到精通(诶诶诶,别打脸,别打脸), 心愿好哥哥们喜爱。
最初的最初,我是娱乐博主,欢送大家来 碰撞(肉弹冲击),冲冲冲 ……

本期就到这啦,有不对的中央欢送好哥哥们评论区留言,另外$\color{#FF0000}{求关注、求点赞}$

下一篇:Redis 装置与配置

退出移动版