Redis基本了解

Redis

基于内存进⾏存储,⽀持 key-value 的存储形式,底层是⽤ C 语⾔编写的。
基于 key-value 形式的数据字典,结构⾮常简单,没有数据表的概念,直接⽤键值对的形式完成数据的管理,Redis ⽀持 5 种数据类型:

字符串
列表
集合
有序集合
哈希

安装 Redis
1、下载 Redis
https://redis.io/download
在这里插入图片描述

2、解压,并在本地硬盘任意位置创建⽂件夹,在其中创建 3 个⼦⽂件夹

bin:放置启动 Redis 的可执⾏⽂件
db:放置数据⽂件
etc:放置配置⽂件,设置 Redis 服务的端⼝、⽇志⽂件位置、数据⽂件位置…

启动 Redis 服务
1、进⼊ redis ⽬录,启动 redis-server。

sudo ./bin/redis-server ./etc/redis.conf

2、进⼊ redis ⽬录,启动 redis-cli,启动 Redis 的客户端管理窗⼝,在此窗⼝中即可操作 Redis 数据库。

./bin/redis-cli

3、对数据进⾏操作。

set key value
get key

4、关闭 Redis 服务。

shutdown

5、退出客户端,control+c。

基本知识
Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定 将数据存储在哪个字典中。 这与在一个关系数据库实例中可以创建多个数据库类似(如下图所示),所以可以将其中的每个字典都 理解成一个独立的数据库。

Redis默认支持16个数据库,可以通过调整Redis的配置文件redis/redis.conf中的databases来修改这一 个值,设置完毕后重启Redis便完成配置。

Redis 使用的到底是多线程还是单线程?
因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。

Redis 概述
在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。

NoSQL 技术
为了克服上述的问题,Java Web项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。

Redis和MongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以支持每秒十几万此的读/写操作,其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。

Redis 在 Java Web 中的应用
Redis 在 Java Web 主要有两个应用场景:

存储 缓存 用的数据;
需要高速读/写的场合使用它快速读/写;

缓存
在日常对数据库的访问中,读操作的次数远超写操作,比例大概在 1:9 到 3:7,所以需要读的可能性是比写的可能大得多的。当我们使用SQL语句去数据库进行读写操作时,数据库就会去磁盘把对应的数据索引取回来,这是一个相对较慢的过程。

如果我们把数据放在 Redis 中,也就是直接放在内存之中,让服务端直接去读取内存中的数据,那么这样速度明显就会快上不少,并且会极大减小数据库的压力,但是使用内存进行数据存储开销也是比较大的,限于成本的原因,一般我们只是使用 Redis 存储一些常用和主要的数据,比如用户登录的信息等。

一般而言在使用 Redis 进行存储的时候,我们需要从以下几个方面来考虑:

**业务数据常用吗?命中率如何?**如果命中率很低,就没有必要写入缓存;
**该业务数据是读操作多,还是写操作多?**如果写操作多,频繁需要写入数据库,也没有必要使用缓存;
**业务数据大小如何?**如果要存储几百兆字节的文件,会给缓存带来很大的压力,这样也没有必要;

高速读/写的场合
在如今的互联网中,越来越多的存在高并发的情况,比如天猫双11、抢红包、抢演唱会门票等,这些场合都是在某一个瞬间或者是某一个短暂的时刻有成千上万的请求到达服务器,如果单纯的使用数据库来进行处理,就算不崩,也会很慢的,轻则造成用户体验极差用户量流失,重则数据库瘫痪,服务宕机,而这样的场合都是不允许的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[machine Learning]推荐系统

其实严格来说推荐系统也是一种监督学习,我们需要根据已有数据进行预测,但是这种训练数据不是单纯的输入和输出问题,所以被归类为"超越监督学习"的一种? 今天去旁听了隔壁专业的机器学习课程,感觉自己的知识确实不是很系统,所以后面会找个机会把前面的代码给补充上.…

Qt打开及创建项目,运行程序(1)

安装之后, 1.文件->新建文件或项目 2.Application->Qt Widgets Application 3.自己设置名称和路径 4.这一步非常非常重要,要选择编译器,(MinGW是可以在Qt里用,如果想与VS交互,要选择MSVC&#xff09…

uniapp 路由不要显示#

在Uniapp中,路由默认使用的是hash模式,即在URL中添加#符号。如果你不想在URL中显示#,可以切换为使用history模式。 要在Uniapp中使用history模式,可以按照以下步骤进行操作: 打开manifest.json文件。在"app&qu…

解决charles只能使用30分钟

问题描述 Charles 30分钟会自动关闭,弹出一个弹窗。 解决步骤 1.网上查找后发现是需要注册一下。 2.打开Charles,如图的操作顺序 3.框内输入 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 4.重启即可

在css中设计好看的阴影

在css中设计好看的阴影 在本文中,我们将学习如何将典型的盒子阴影转换为更好看的的阴影。 统一角度 当我们想要一个元素有阴影时,会添加box-shadow属性并修改其中的数字,直到满意为止。 问题是,通过像这样单独创建每个阴影&…

vue的第2篇 开发环境vscode的安装以及创建项目空间

一 环境的搭建 1.1常见前端开发ide 1.2 安装vs.code 1.下载地址:Visual Studio Code - Code Editing. Redefined 2.进行安装 1.2.1 vscode的中文插件安装 1.在搜索框输入“chinese” 2.安装完成重启,如下变成中文 1.2.2 修改工作区的颜色 选中[浅色]…

python实现某音自动登录+获取视频数据

前言 Dy这个东西想必大家都用过,而且还经常刷,今天就来用代码,获取它的视频数据 环境使用 Python 3.8 Pycharm 模块使用 requests selenium json re 一. 数据来源分析 1. 明确需求 明确采集网站以及数据内容 网址: https://www.dy.com/…

【LeetCode-中等题】40. 组合总和 II

文章目录 题目方法一:递归回溯去重 题目 本题需要注意的就是去重操作因为nums数组里面的元素可能存在重复: 不重复的版本:【LeetCode-中等题】39. 组合总和 不去重版 方法一:递归回溯去重 参考讲解视频—回溯算法中的去重&#…

深入了解苹果证书及其分类,提升iOS应用开发效率

目录 1. 企业证书 2. 开发者证书 开发证书: 发布证书: 3. 推送证书 4. 分发证书 5. MDM证书 摘要:本文将详细介绍苹果证书的作用及分类,包括企业证书、开发者证书、推送证书、分发证书和MDM证书,帮助开发者了解…

04-Apache Directory Studio下载安装(LDAP连接工具)

1、下载 官网下载Apache Directory Studio 注意Apache Directory Studio依赖于jdk,对jdk有环境要求 请下载适配本机的jdk版本的Apache Directory Studio,下图为最新版下载地址 Apache Directory Studio Version 2.0.0-M16 基于 Eclipse 2020-12,最低要…

AJAX学习笔记2发送Post请求

AJAX学习笔记1发送Get请求_biubiubiu0706的博客-CSDN博客 继续 AJAX发送POST请求 无参数 测试 改回来 测试 AJAX POST请求 请求体中提交参数 测试 后端打断点 如何用AJAX模拟form表单post请求提交数据呢? 设置请求头必须在open之后,send之前 请求头里的设置好比…

mysql8 Found option without preceding group错误

这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误,死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依…

Mysql 备份与恢复

日志 MySQL 的日志默认保存位置为 /usr/local/mysql/data 常见的日志 错误日志:mysql本身启动,停止,运行期间发生的错误信息一般查询日志二进制日志:用于基于日志形式的数据恢复。用于主从复制,实现主从同步&#xf…

赛宁网安有力保障淮安市网络安全技能竞赛决赛

9月6日,由中共淮安市委网信办、淮安市总工会、淮安市人社局、淮安市教育局、淮安市公安局、共青团淮安市委共同主办,淮阴工学院协办,淮安市网络信息和数据安全协会、淮安市信息安全等级保护工作协调小组办公室承办,中国电信股份有…

2023年MySQL实战核心技术第一篇

目录 四 . 基础架构:一条SQl查询语句是如何执行的? 4.1 MySQL逻辑架构图: 4.2 MySQL的Server层和存储引擎层 4.2.1 连接器 4.2.1.1 解释 4.2.1.2 MySQL 异常重启 解决方案: 4.2.1.2.1. 定期断开长连接: 4.2.1.2.2. 初始…

EasyPhoto:基于 SD WebUI 的艺术照生成插件来啦!

作者 :wuziheng 背景介绍 最近,基于生成式AI技术批量产出真/像/美的个人写真应用非常受欢迎。同时,随着 Stable Diffusion 领域开源社区的快速发展,社区也涌现了类似 FaceChain 的开源项目,帮助开发者开发个性化的真…

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…

高压放大器在机械制造领域的应用有哪些

在机械制造领域&#xff0c;高压放大器扮演着至关重要的角色。它们被广泛应用于各种机械设备和系统中&#xff0c;提供高压力、高精度的电信号放大。下面安泰电子将详细介绍高压放大器在机械制造领域的几个关键应用。 材料测试和强度试验 高压放大器广泛应用于材料测试和强度试…

基于Python开发的DIY字符画程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的DIY字符画程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

I.MX RT1176笔记(9)-- 程序异常追踪(CmBacktrace 和 segger rtt)

前言 在使用 ARM Cortex-M 系列 MCU时候&#xff0c;有时候会遇到各种异常&#xff08;Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault&#xff09;&#xff0c;这时候我们根据经验查询PC指针&#xff0c;LR寄存器&#xff0c;堆栈数据定位地址然…