redis 缓存中间件 (缓存数据库)

redis的简介

nginx web服务器

php 转发动态请求

tomcat web页面 ,也可以转发动态请求

springboot 自带tomcat

所有的数据库都不支持高并发,一旦访问量激增,数据库很快就会崩溃。

redis 也是一个数据库,不单单是一个缓存工具。

redis 非关系型数据库 nosql not only sql 不仅仅是sql

键值对形式

key value

test1=test2

test1=10

数据的类型不是定义好的类型

redis :远程字典服务器

键值对

开源的,c语言写的nosql数据库。

redis基于内存运行,所有的数据不是保存在硬盘,而是内存。

持久化------------定期或者人为的把数据保存到硬盘。

redis的优点:

1、极高的读写速度,读速度可以达到110000次/s 写81000次/s

2、支持丰富的数据类型,键值对可以定义多种数据类型 string list hash set

3、支持数据持久化,内存当中的数据保存到磁盘

4、原子性,redis所有操作都是原子性

5、支持主从模式和高可用模式(哨兵模式),以及集群。

redis应用的场景

redis基于内存运行的数据库,缓存是最常应用的场景

排行榜

计数器

存储关系

实时分析记录,日志系统。

缓存的概念:

缓存是一种用于存储临时数据副本的技术。目的就是提高访问速度和性能。

缓存通常位于数据的访问路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以直接获取数据。

缓存的应用场景;

web缓存

数据库缓存

对象缓存(大数据应用)


redis的类型以及命令

进入redis的命令

redis-cli -h 192.168.124.60 -p 6379

-h 指定ip地址

-p 指定端口

-a 密码(没有密码可以不加)

redis-cli 命令行工具

redis-server start stop restart 控制redis

redis-benchmark 检测redis在本机的运行效率

redis-check-aof 修复aof持久化的文件

redis-check-rdb 修复rdb持久化的文件

redis-benchmark -h 192.168.124.60 -p 6379 -c100 -n100000

向redis的主机模拟发送100个并发链接,同时发送十万个请求测试

redis-benchmark -h 192.168.124.60 -p 6379 -q -d 100

模拟存储100个数据包的性能测试

redis数据类型

string类型:字符串

list:列表

hash类型 hash值里面有多个对象和多个值,对象不能重复,值可以重复

set无序集合 不能重复,没有权重

zset有序集合 不能重复,有权重

进入redis数据库中:

set +键名+键值:创建数据(也可以更改已经存在键值对的值)

get +键名: 获取数据

keys * :查看库中有多少个键值对

exists + 键名 :判断当前库中键值对是否存在,存在返回码1,不存在返回码0

type +键名:查看键值对的类型

del +键名:删除键值对

rename +键名 :更改键值对键的名字

config set requirepass +密码 :给redis数据库设置密码

auth +密码 :进入已经设置密码的redis数据库

string类型,是redis的基础类型,最大能够存储512MB的数据

数字 图片 等等 都是默认string

append +键名:该键如果没有将会添加,如果有键会进行追加值

strlen +键名:显示值的长度

incr +键名:让值自增1

decr+键名:让值自减1

incrby+键名:指定加的值

decrby +键名 :指定减的值

setex+键名+数字(时间)+值:创建生命周期

ttl+键名:查看生命周期

dbsize:查看当前库中的键值对

config get databases :查看有多少个库

select +数字(库的标记):切换库 (每个库都是独立的,彼此之间互不影响)

move +键名 +库的标记:把当前库的键值移到其他库

flushdb:清除当前库

flushall:清除所有库

mset +键名 +键名+键名 :设置多个键值对

mget+键名+键名+键名 :查看多个键值对

list列表类型

lpush +键名 +值 :创建列表

lrange +键名 0 -1:打印所有列的值

0是起始位置,-1是最后一个位置

lpushx +键名+内容:针对已经有的列表进行添加内容(从头部开始插入内容)

lpop +键名 +内容:针对已经有的列表进行移除内容(也是从头部开始移除内容)

llen +键名:查看列表里面的内容

lrem +键名 2 a :删除两个等于a的值

lindex +键名+索引:使用索引查看值

lset +键名+索引 +替换的值 :根据索引来进行替换

linsert +键名 +before +10 +9:在10的前面插入一个9

linsert +键名 +after +10 +11 :在10的后面插入一个11

rpush +键名+a b c d :从左往右来排序创建列表

hash类型 (散列)用来存储对象

特点:对象类别和id构成键名

hash存储的空间很小,占用的内存和持久化后的磁盘空间很少。

hset myhsah id 1:创建键值对

hget +键名+对象+键值:查看键值对

hansh是一个键值对,包含多个对象和对象的值

myhash就是一个hash值,一个hash值可以存4294967295个键值对

hlen myhash :查看对象值(对像的名称不能相同)

hdel myhash +对象:删除对象

hmget myhash:获取对象的值

hgetall:获取所有的信息

hkeys myhash:只获取对象

hvals myhash :只获取对象值

hsetnx myhash :只添加不存在的对象,添加存在的对象会报错

set集合 无序集合

元素类型只能是string,无序集合当中元素具有唯一性,不允许重复

应用场景:可以用set的数据来追踪唯一性的数据,如ip地址,或者根据客户的id区分不同客户购买的统一产品

sadd myset :创建无序集合

smembers myset :查看无序集合

scard myset :获取元素的数量

srandmember myset:随意获取一个值

spop myset:随意删除一个值

srem myset:指定删除

smove myset myset2 a :把集合1的a值移到集合2里面

zest有序集合

元素类型都是string 元素唯一,不能重复

每个元素都会关联一个doublel类型的分数score(表示权重),通过权重的大小来进行排序,权重可以相同。

zadd myzet 1 "one"

zadd myzet 2 "two"

zadd myzet 3 "three"

zrange myzet 0 -1 withscores :按照权重大小进行排序,不仅仅显示成员,还会显示权重分数

zrangebyscore myzet 2 5 min max :获取大于等于2小于等于5的权重

zrevrange myzet:按照索引的倒序进行排列


redis总结

Redis 是一个开源的、使用 C 语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库。

主要特点包括

  1. 高性能:Redis 数据存储在内存中,读写速度极快,能够支持每秒数十万次的读写操作。
    • 例如,在高并发的 Web 应用中,Redis 可以用于存储频繁访问的热点数据,以减少对后端数据库的压力,提高响应速度。
  2. 丰富的数据结构:支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等多种数据结构。
    • 比如,使用列表可以实现消息队列,使用有序集合可以实现排行榜功能。
  3. 支持持久化:可以将数据定期或在特定条件下保存到硬盘,保证数据的安全性和可靠性。
    • 常见的持久化方式有 RDB(快照)和 AOF(日志)。
  4. 支持主从复制:实现数据的备份和读写分离,提高系统的可用性和扩展性。
    • 主节点负责写操作,从节点负责读操作,分担了服务器的压力。
  5. 原子性操作:Redis 的操作都是原子性的,这确保了在并发环境下数据的一致性。

应用场景广泛

  1. 缓存:存储经常被访问的数据,减少对数据库的查询次数,提高性能。
  2. 计数器:如网站的访问量、点赞数等。
  3. 消息队列:利用列表数据结构实现简单的消息队列功能。
  4. 分布式锁:保证在分布式环境下资源的互斥访问。

总之,Redis 以其出色的性能、丰富的数据结构和强大的功能,在现代 Web 开发和大数据处理等领域发挥着重要作用。

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

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

相关文章

docker 配置安装宝塔面板

宝塔镜像 https://hub.docker.com/r/btpanel/baota 配置宝塔 第一步:创建一个名为 bt-data 的目录,此目录将存储宝塔数据。 $ mkdir bt-data $ chmod -R 755 bt-data 第二步:在 bt-data 目录中创建一个名为 docker-compose.yml 的文件&#x…

IDEA项目的依赖(pom.xml文件)导入问题及解决

前言:该文章为转载,没有仔细的看 IDEA新建项目和pom.xml文件被修改时,右下角都会出现 Maven projects need to be imported(项目需要导入依赖) 如下,点击 Import Changes导入后,有时会一直处于…

数据库-存储过程

1、概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数…

【Android面试八股文】荣耀面试算法题:输出所有的水仙花数

文章目录 一、水仙花数的定义二、算法实现 一、水仙花数的定义 要输出所有的水仙花数,我们需要先了解什么是水仙花数。 水仙花数(Narcissistic number),也称为自恋数、自幂数、阿姆斯特朗数,是指一个 n 位的正整数&a…

NAS、SAN 与 DAS 的比较与应用场景

文章目录 1. NAS(网络附加存储)定义特点实现成本:适用场景 2. SAN(存储区域网络)定义特点实现成本:适用场景 3. DAS(直接附加存储)定义特点实现成本:适用场景 区别总结结…

Redis学习[1] ——基本概念和数据类型

Redis学习[1] ——基本概念和数据类型 一、Redis基础概念 1.1 Redis是什么,有什么特点? Redis是一个基于**内存的数据库,因此读写速度非常快**,常用作缓存、消息队列、分布式锁和键值存储数据库。支持多种数据结构:…

Java 内推 | 教育行业缺口来了,研发,运维,产品,教研,职能,营销... 别错过

Java 内推 | 教育行业缺口来了,研发,运维,产品,教研,职能,营销… 别错过 岗位职责: 1、根据公司战略及业务规划,参与部门业务架构分析与设计,包含规划立足当前、面向未来的应用架构…

源码编译安装,及nginx服务控制、监控块

1.源码编译安装: [root17dns ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz 2.解压: [root17dns ~]# tar -zxvf nginx-1.27.0.tar.gz 3.安装gcc等工具 [root17dns ~]# yum -y install gcc gcc-c [root17dns ~]# yum -y install make lrzsz …

postman给全部接口添加请求头数据(如token)

如果给没有一个接口添加请求头token就太慢了,如下图。可以点击所有接口的所属的目录。点击“Scripts”,点击Pre-request按钮。加入代码: pm.request.addHeader("Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI111pXVCJ9.eyJjbGFpbXMiOnsiaW…

小红书笔记评论采集全攻略:三种高效方法教你批量导出

摘要: 本文将深入探讨如何利用Python高效采集小红书平台上的笔记评论,通过三种实战策略,手把手教你实现批量数据导出。无论是市场分析、竞品监测还是用户反馈收集,这些技巧都将为你解锁新效率。 一、引言:小红书数据…

项目实战_表白墙(简易版)

你能学到什么 一个比较简单的项目:表白墙(简易版),浏览器:谷歌升级版将在下个博客发布 效果如下 正文 说明 我们是从0开始一步一步做这个项目的,里面的各种问题,我也会以第一人称视角来解…

flask mysql数据迁移

flask 数据迁移 在Flask中使用数据库迁移,通常我们会结合SQLAlchemy和Alembic来管理数据库的迁移。以下是一个基本的数据迁移流程: 安装Flask-Migrate: pip install Flask-Migrate 配置Flask应用和数据库: from flask import Fla…

yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境 当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行,如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机,所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机,需要的可以…

[C++] 小游戏 能量 1.0.3 版本 zty出品

大家好,今天zty带来的是能量的1.0.3版本,此版本可以存档(自动的),用于保存战绩,在运行时会跳出主菜单,而不是直接开始游戏,辅助游戏的函数大小总和已经超过了游戏主体,zt…

01-IaC CloudFormation的必要性和使用方法

前言 将应用的需求、开发、测试、部署和运营统一起来,基于整个组织的协作和应用架构的优化,实现敏捷开发、持续交付和应用运营的无缝 集成。帮助企业提升IT效能,在保证稳定的同时,快速交付高质量的软件及服务,灵活应对快速变化的业务需求和市场环境。 1 持续交付 持续交…

Pandas教程:详解如何使用Pandas操作数据库

目录 1. 环境准备 2. 建立与数据库的连接 连接参数详解: 3. 从数据库读取数据 使用参数化查询 4. 将数据写入数据库 if_exists 参数详解: 5. 更新和删除数据 更新数据 删除数据 6. 实战案例 6.1 创建数据库和表 6.2 插入示例数据 6.3 更新…

OpenBayes 教程上新 | 文生图、图生图、图像修复三合一神器, HiDiffusion 一键启动教程现已上线!

扩散模型已成为高分辨率图像合成的主流方法,传统的扩散模型虽然在图像合成方面取得了显著进展,但在扩展到更高分辨率时往往面临对象重复和计算成本增加的问题。 旷世科技开源的高分辨率框架 HiDiffusion,由分辨率感知 U-Net (RAU-Net) 和改进…

Nacos 相关面试问题及答案

Nacos 是什么? Nacos (Naming and Configuration Service) 是一个开源项目,是由 Alibaba 开发的,它致力于提供动态服务发现、服务健康监测、动态配置服务以及服务管理的平台,它被设计用于帮助构建云原生应用,是微服务…

求最大公约数与最小公倍数(C语言 简洁快速版)

求最大公约数 辗转相除法(首选,因为简单快捷) 思路: 1.将两整数求余 a%b c 2.如果c 0;则b为最大公约数 3.如果c ! 0,则 a b;b c;继续从1开始执行 4.也就是说该循环的是否继续的判断条件就是c是否为0 …