Redis缓存中间件

1、传统中间件

nginx,web服务器

php,转发动态请求

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

springboot,自导tomcat

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

2、Redis简介

Redis:远程字典服务器

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

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

持久化的功能——定期或者人为的把数据保存到硬盘

3、Redis的作用

减轻数据库的压力

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

是非关系型数据库,nosql(not only sql 不仅仅是sql),键值对形式key value,数据的类型不是定义好的类型

4、Redis的优点

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

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

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

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

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

5、应用场景

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

其他应用场景:排行榜、计数器、存储关系、实时分析记录,日志系统

6、缓存

6.1概念

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

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

6.2缓存的应用场景

web缓存、数据库缓存、对象缓存(大数据应用)

7、Redis的安装

systemctl stop firewalld
setenforce 0#安装依赖环境
yum -y install gcc gcc-c++ make#解压
tar -xf redis-5.0.7
cd redis-5.0.7/#指定4个cpu进行安装
make -j 4#指定安装路径
make PREFIX=/usr/local/redis install
cd utils#直接运行脚本
./install_server.sh
一直回车,在"select the redis executable path"这一行输入/usr/local/redis/bin/redis-server#软连接
ln -s /usr/local/redis/bin/* /usr/local/bin#查看端口是否开启
netstat -antp | grep 6379#配置主机
vim /etc/redis/6379.conf
70行添加ip bind 127.0.0.1 192.168.230.21#开启redis
/etc/init.d/redis_6379 restart#查看状态
/etc/init.d/redis_6379 status#查看日志
tail -f /var/log/redis_6379.log#进入redis
redis-cli -h 192.168.230.21 -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.230.21 -p 6379 -c 100 -n 100000
#向redis的主机模拟发送100个并发连接,同时发送十万个请求redis-benchmark -h 192.168.230.21 -p 6379 -q -d 100
#模拟存储100个数据包的性能测试

8、Redis基础数据类型

8.1string

字符串

是redis的基础类型,最大能够存储512MB的数据,数字、图片等都是默认string类型

#创建数据
set test1 10#获取数据
get test1#查看保存的键值对
keys *#判断键值对是否存在
exists test1(存在返回1,不存在返回0)#查看键值对值的类型
type test1#删除键值对
del  test1#改键名
rename test1(旧名) xy102(新名)#添加密码
config set requirepass 123456#密码登录
auth 123456#对键值进行追加,如果没有直接添加
append#值自加1
incr#值自减1
decr#指定加值
incrby#指定加10
incrby mykey 10 #指定减10
decrby mykey 10#设置键名mykey,存活时间为15秒,值为hello,到期之后键从当前库删除
setex mykey 15 hello#查看
ttl mykey#当前库中有几个键值对
dbsize#查看有几个库,一共16个库,第一个库从0开始,最后一个库15
config get databases#切换库
#每个库都是独立的,彼此之间互不影响
select #移动键值对到1库
move mykey 1#清空当前库
flushdb#清空所有库
flushall#一次性创建多个键值对
mset#一次性查看多个键值对
mget

8.2list

列表

#创建list类型
lpush
lpush mykey a b c d(顺序是d c b a)rpush 
rpush mykey a b c d(顺序是a b c d)#查看列
lrange#获取索引0到-1的元素,索引是从0开始的,-1是列表当中的最后一个元素
lrange mykey 0 -1#添加列(从头插入元素)
lpushx#移除元素,从第一个开始移除
lpop#查看有几个元素
llen#删除2个等于a的值(返回1表示成功,返回0表示失败)
lrem mykey 2 a#用索引打印指定的位置
lindex#根据索引位置进行值的替换
lset 
#将索引为5的元素替换成10
lset mykey 5 10#指定的值进行前后替换(在10的前/后插入9)
linsert mykey before 10 9
linsert mykey after 10 9

8.3hash

散列,键对集合

用来存储对象,对象类别和ID构成键名

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

hash是一个键值对包含多个对象和对象的值,对象名不可重复

#创建hash
hset myhash id 1#查看
hget myhash id
myhash就是一个hash值,一个hash值可以存储4294967295个键值对#查看存储的对象
hlen myhash#删除
hdel myhash id#一次查看多个对象
hmget myhash id1 id2#查看所有
hgetall myhash#查看对象名
hkeys myhash#查看对象对应的值
hvals myhash#添加对象
hsetnx myhash id1 1

8.4set

集合,不重复的无序集合

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

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

#创建
sadd myset a b b c#查看元素
smembers myset#添加
sadd myset a d e#获取元素的个数
scard myset#随机获取一个元素
srandmember myset#指定删除
srem myset a#随机删除
spop myset#将集合1的数据移到集合2中
smove myset myset2 a(将myset中的a移到myset2中)

8.5zet

有序集合

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

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

#创建
zadd myzet 1 "one" 2 "two" 3 "three"(1 2 3为权重)#查看
zrange myzet 0 -1 withscores#获取权重大于等于2,小于等于zrangebyscore myzet 2 5#按照索引倒序排列
zrevrange myzet 1 3

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

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

相关文章

SpringBoot 整合 Redis 实现验证码登录功能

一、整合Redis 在pom.xml中添加Redis相关依赖&#xff1b; <!--Spring Data Redis依赖配置--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>…

永结无间Ⅵ--第一支AI测试团队

我们都梦想拥有一支 AI 测试团队。每个工程团队都应该测试他们的应用程序&#xff0c;但测试速度慢、成本高&#xff0c;而且很少能提供足够的覆盖范围。大多数团队几乎没有测试。专门的测试人员或供应商往往会忽略测试的许多方面。测试人员希望专注于测试中有趣且重要的方面&a…

WPF的MVVM架构:如何通过数据绑定简化UI逻辑

WPF的MVVM架构&#xff1a;如何通过数据绑定简化UI逻辑 目录 MVVM模式概述数据绑定在MVVM中的作用实现MVVM模式的步骤MVVM模式中的常见问题与解决方案实践示例总结 MVVM模式概述 MVVM&#xff08;Model-View-ViewModel&#xff09;是一种设计模式&#xff0c;用于WPF应用程序…

Navidrome音乐服务器 + 音流APP = 释放你的手机空间

20240727 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; Navidrome音乐服务器 Demo试用&#xff1a; 支持多平台&#xff1a; 下载&#xff1a; 修改配置&#xff1a; 设置用NSSM成服务启动&#xff1a; 服务器本地访问网址&#xff1a; 音流 歌词封面API&am…

HTML+CSS+JavaScript实现烟花绽放的效果源码

源码 复制粘贴代码 在同级别下放一张图片fire.png接可以了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议&#xff0c;并完成了初稿。 本周继续修改论文&#xff0…

【Qt】QLCDNumberQProgressBarQCalendarWidget

目录 QLCDNumber 倒计时小程序 相关属性 QProgressBar 进度条小程序 相关设置 QLCDNumber QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值&#xff0c;例如时钟、计时器、计数器等 常用属性 属性说明intValueQLCDNumber显示的初始值(int类型)va…

Hbase简介和快速入门

一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的&#xff0c;一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文&#xff0c;论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…

【JAVA学习笔记】找不到依赖项 ‘org.springframework.boot:spring-boot-starter-web:3.0.5‘

如果环境都是跟着教程配的话&#xff0c;并且上网搜了一圈询问gpt都没发现对应长得像的错误&#xff0c;那么试试刷新一下Maven项目&#xff0c;可能问题就自己解决了。如果这样解决不了再查到底是什么地方没有配置对。 &#xff08;我第一次遇到这个问题的时候搜了半天都不知…

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

【Windows】Mountain Duck(FTP服务器管理工具)软件介绍

软件介绍 Mountain Duck是一款基于Cyberduck开发的应用程序&#xff0c;它允许用户通过FTP、SFTP、WebDAV、S3和OpenStack Swift等协议连接到云存储和远程服务器&#xff0c;并在本地文件浏览器中以熟悉的方式访问和管理这些文件。 功能特点 支持多种协议: Mountain Duck支持…

Unity和WebGL交互-2024/7/30

进入项目 1 新建一个.jslib的文件 2 放到项目内Plugins文件夹下 3 可以用vscode之类的编译器打开这个文件 编写内容 mergeInto(LibraryManager.library, {// 方法名必须和c#中的相同// 有参数 需要用UTF8ToString&#xff08;&#xff09;OnInitSDK:function(str) {window.OnIn…

vue自写组件可输入,可下拉选择,因为el-autocomplete数据多了会卡

<!-- 引入组件 --><AutoCompletev-model"scope.row.strreceivername":lngemployeeid"scope.row.lngreceiverid"select"handleSelect($event,scope.row)"/> methods:{handleSelect(item, row) {row.lngreceiverid item.lngemployeei…

项目实战——外挂开发(30小时精通C++和外挂实战)

项目实战——外挂开发&#xff08;30小时精通C和外挂实战&#xff09; 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1&#xff0c;修改内存中的数据 2&#xff0c;更改内存中…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作者&#xff1a;王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台&#xff0c;基于字节跳动数据平台多年的“数据…

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String&#xff1a;用于表示文本数据。Number&#xff1a;用于表示数值&#xff0c;包括整数和浮点数。BigInt&#xff1a;用于表示任意精度的整数。Boolean&#xff1a;用于表示逻辑值…

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户&#xff0c;然后输入账号和密码即可登录微信&#xff0c…

git 推送时出现错误 Locking support detected on remote “origin“

背景&#xff1a;代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番&#xff0c;其中有人提到可能时服务器磁盘满了&#xff0c;连到服务器上 df -h 查看&#xff0c; 发现根目录已经写满了&#xff1a; 使用命令行&#xff1a; d…

scipy.fft.fft函数与scipy.fft.rfft函数的异同

import numpy as np from scipy import signal import matplotlib.pyplot as plt思路&#xff1a;1&#xff09;先利用fft计算得出其幅频值2&#xff09;在利用rfft计算得出其幅频值&#xff0c;看1&#xff09;和2&#xff09;那个能还原出信号的原始幅值# 生成一个示例信号 n…