【SpringBoot详细教程】-09-Redis详细教程以及SpringBoot整合Redis【持续更新】

news/2024/10/4 20:06:59 标签: spring boot, redis, 后端

🌲 Redis 简介

🌾 什么是Redis

Redis 是C语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、消息中间件等场景,是一种NoSQL(not-only sql,非关系型数据库)的数据库

Redis是互联网技术领域使用最为广泛的存储中间件,它是「Remote DictionaryService」的首字母缩写,也就是「远程字典服务」。Redis以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。国内外很多大型互联网公司都在使用Redis,比如Twitter、YouPorn、暴雪娱乐、Github、StackOverflow、腾讯、阿里、京东、华为、新浪微博等等,很多中小型公司也都有应用。也可以说,对Redis的了解和应用实践已成为当下中高级后端开发者绕不开的必备技能。

🌾 Redis特性

🍁 速度快

正常情况下,Redis?执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能,但这里先不讨论机器性能上的差异,只分析一下是什么造就了Rdis如此之快的速度,可以大致归纳为以下三点:

  • Redistribution所有数据都是存放在内存中
  • Redis使用C语言实现的,一般来说,C语言实现的程序距离操作系统更近,执行速度会更快。
  • Redis使用了单线程架构,预防了多线程可能产生的竞争问题。

🍁 基于键值对的数据结构服务器

几乎所有的编程语言都提供了类似字典的功能,例如Java里的map、Python.里的dict,类似于这种组织数据的方式叫作基于键值的方式,与很多键值对数据库不同的是,Rdis中的值不仅可以是字符串,而且还可以是具体的数据结构,这样不仅能便于在许多应用场景的开发,同时也能够提高开发效率。Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合,同时在字符串的基础之上演变出了位图(Bitmaps)和HIyperLogLogr两种神奇的“数据结构”,并且随着LBS(Location Based Service,基于位置服务)的不断发展,Redis.3.2版本中加入有关GEO(地理信息定位)的功能,总之在这些数据结构的帮助下,开发者可以开发出各种“有意思”的应用。

🍁 丰富的功能

除了5种数据结构,Redis还提供了许多额外的功能:

  • 提供了键过期功能,可以用来实现消息系统
  • 支持Lua脚本功能,可以利用Lua创造出新的Redis命令
  • 提供了简单的事务功能,能在一定程度上保证事务的特性
  • 提供了流水线功能,这样客户端能将一批命令一次性传到redis,减少网络的开销

🍁 简单稳定

Redis的简单主要表现在三个方面。首先,Redis的源码很少,早期版本的代码只有2万行左右,3.0版本以后由于添加了集群特性,代码增至5万行左右,相对于很多oSQL数据库来说代码量相对要少很多,也就意味着普通的开发和运维人员完全可以“吃透”它。其次,Rdis使用单线程模型,这样不仅使得Rdis服务端处理模型变得简单,而且也使得客户端开发变得简单。最后,Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libeventi这样的系统类库),Redis自己实现了事件处理的相关功能。

Redis:虽然很简单,但是不代表它不稳定。以笔者维护的上千个Redis为例,没有出现过因为Redis自身bug而宕掉的情况。

🍁 客户端语言多

Rdis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis受到社区和各大公司的广泛认可,所以支持Redis的客户端语言也非常多,几乎涵盖了主流的编程语言,例如Java、PHP、Python、C、C+、Nodejs等

🍁 持久化

通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redisi提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中这样就保证了数据的可持久性。

🍁 主从复制

Redis提供了复制功能,实现了多个相同数据的Redis副本,复制功能是分布式Redis的基础。

🍁 高可用和分布式

Redis,从2.8版本正式提供了高可用实现Redis Sentinel,它能够保证Redis节点的故章发现和故障自动转移。R©dis从3.0版本正式提供了分布式实现Redis Cluster,它是Redis.真正的分布式实现,提供了高可用、读写和容量的扩展性。

🌾 Redis可以做什么

Redis的业务应用范围非常广泛,比如掘金技术社区的帖子模块为实例,梳理一下Redis可以用在哪些地方?

🍁 缓存

缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。

🍁 排行榜系统

排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

🍁 计数器应用

计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。

🍁 社交网络

赞踩、粉丝、共同好友喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。

🍁 消息队列系统

消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。

🌲 windows环境下安装Redis

  • windows 64位操作系统
  • Redis安装包(当前教程版本:5.0.10)

  • 点击Redis-x64-5.0.10.msi安装包,选择好安装目录直接下一步傻瓜式安装。
  • 安装完毕之后,安装目录中会有如下文件:

文件介绍:

  • redis-benchmark.exe 基准测试
  • redis-cli.exe # 客户端
  • redis-server.exe # 服务器
  • redis.windows.conf # 配置文件

windows运行(快捷键:windows 键+R 键),输入【cmd】命令

进入到Redis安装目录输入命令:

redis-server.exe redis.windows.conf

当前版本安装之后会自动将redis服务加入到注册表中,无需再做服务注册

安装图形界面工具:redis-desktop-manager-0.9.3.817.exe

安装过程同样是一直下一步进行安装

安装完毕之后,会打开如图所示界面:

  • 首先点击“连接到Redis服务器”

  • 然后取好名字,ip地址和端口号就用默认的

  • 出现如下界面表名已经成功连上了服务器了

🌲 Redis 基本语法

🌾 key值相关

  • TYPE key -- 用来获取某key的类型
  • KEYS pattern -- 匹配所有符合模式的key。比如KEYS * 就是列出所有的key
  • RANDOMKEY -- 返回一个随机的key
  • RENAME oldkey newkey -- 修改key的名字

注意:key是区分大小写的

案例:打开redis客户端,进行如下测试:


http://www.niftyadmin.cn/n/5690295.html

相关文章

【Linux系统编程】权限

目录 1、shell命令以及运行原理 2、Linux权限的概念 3、Linux权限管理 3.1 文件访问者的分类(人) 3.2 文件类型和访问权限(事物属性) 4、目录的权限 5、粘滞位 1、shell命令以及运行原理 首先,我们来了解一条指令是如何跑起来的 一般操作系统是不会让用户直…

关于深度学习torch的环境配置问题

已经下好了torch在虚拟环境中,结果在ipynb文件中无法运行 后来在终端直接用python语句编译 发现没有问题 在编辑测试py文件 发现runcode有问题 原来是插件默认base环境 具体操作参考VS Code插件Code Runner使用python虚拟环境_coderunner怎么在虚拟环境中使用-CSD…

浅谈stm32的GPIO引脚配置模式

STM32的GPIO(通用输入输出)引脚可以被配置为多种模式,以适应不同的应用场景。下面介绍一些一些常见的STM32 GPIO引脚模式: 模拟输入模式(Analog Input Mode):在这种模式下,GPIO引脚被…

探索Python中的装饰器模式

引言: 在Python编程中,装饰器是一个非常重要的概念。它们提供了一种优雅的方式,能够在不修改原始函数代码的情况下,为函数添加新的功能。本文将深入探讨Python中的装饰器模式,包括其工作原理、如何创建装饰器以及如何在…

基于facefusion的换脸

FaceFusion是一个引人注目的开源项目,它专注于利用深度学习技术实现视频或图片中的面部替换。作为下一代换脸器和增强器,FaceFusion在人脸识别和合成技术方面取得了革命性的突破,为用户提供了前所未有的视觉体验。 安装 安装基础软件 安装…

带你深入浅出设计模式:五、简单工厂模式:构建软件的高效生产“流水线”

此为设计模式第五谈! 用总-分-总的结构和生活化的例子给你讲解设计模式! 码农不易,各位学者学到东西请点赞收藏支持支持! 开始部分: 总:简单工厂模式就是通过一个工厂类创建对象,减少了客户端…

Android SystemUI组件(10)禁用/重启锁屏流程分析

该系列文章总纲链接:专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明: 说明:本章节持续迭代之前章节的思维导图,主要关注左侧上方锁屏分析部分 应用入口处理流程解读 即可。 在 Android 系统中,禁用锁屏…

Ubuntu启动后第一次需要很久才能启动GTK应用问题

Ubuntu启动后第一次需要很久才能启动GTK应用问题 自从升级了 Ubuntu 之后,设备重启,发现打开 Terminal 、Nautilus 以及其他的GTK 应用都很慢,需要至少一分钟的时间启动。 刚开始也是拿着 journalctl 的异常日志去寻找答案,但是没…