当前位置: 首页 > news >正文

Redis 缓存中间件 缓存数据库

Redis 缓存中间件 缓存数据库

nginx web服务
PHP 转发动态请求
tomcat web页面也可以转发动态请求
springboot 自带tomcat
所有的数据库不支持高并发,一旦访问量激增,数据库很快就会崩溃。
Redis 非关系型数据库 nosql not only sql 不仅仅是sql
键值对形式:
key value
数据的类型不是定义好的类型。根据自定义,系统自动识别。

Redis简介:

Redis 远程字典服务器
键值对
开源的,C语言写的nosql数据库。
Redis基于内存运行,所有的数据不是保存到硬盘,而是内存。
持久化: 定期或者人为的把数据保存到硬盘上

安装步骤:
yum -y install gcc gcc-c++ make
tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7/
ls
make -j 4
make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
/usr/local/redis/bin/redis-server
#4次回车,输入安装目录/usr/local/redis/bin/redis-server
ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
#70行加入自己本机的地址
/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 status
netstat -antp | grep 6379

Redis的优点:

1、极高的读写速度,读速度可以达到11万次/秒,写入:81000次/秒
2、支持丰富的数据类型,键值对可以定义多种数据类型 string list hash set
3、支持数据持久化,内存当中的数据保存到磁盘
4、原子性,Redis所有操作都是原子性。要么都成功,要么都失败。
5、支持主从模式和高可用模式(哨兵模式),以及集群。

Redis基于内存运行的数据库,缓存是最常应用场景。
排行榜
计数器
存储关系
实时分析记录,日志系统。

缓存的概念:

缓存是一种用于存储临时数据副本的技术。
目的:提高访问速度和性能。
缓存通常位于数据的访问路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以之间获取数据。

缓存应用场景:
1、web登录缓存
2、数据库缓存
3、对象缓存(大数据应用)

redis-cli -h 192.168.11.146 -p 6379
-h 指定地址
-p 指定端口 (必须加端口)
-a 指定密码 (没密码可以不加)

redis-cli 命令行工具
redis server start stop restart 控制redis
redis-benchmark 检测redis在本机的运行效率
redis-check-aof 修复AOF持久化的文件
redis-check-rbd 修复RDB持久化的文件

redis-benchmark -h 192.168.11.147  -p 6379 -c 100 -n 100000
向redis的主机模拟发送100个并发连接,同时发送100000个请求测试redis-benchmark -h 192.168.11.146 -p 6379 -q -d 100
模拟存储100个数据包的性能测试
vim /etc/redis/6379.conf     #主要配置文件
70 监听端口配置
89 保护模式
93 端口配置
172 日志路径   /var/log/redis_6379.log
/etc/init.d/redis_6379 restart   #控制Redis状态

进入redis

[root@myslq4 utils]# redis-cli -h  192.168.11.147 -p 6379 -a 123456 
CONFIG SET requirepass ""   #无法重启故障解决

redis 数据库常用命令

1、基础数据类型:

string 字符串
list 列表型
hash 散列,键值对
set 集合,不重复的无序集合
zset 有序集合

创建键值对
set test1  10
获取数据
get test1
"10"
查看是否存在

(存在返回1,不存在返回0)

EXISTS test1
查看存在的键值对
keys *
查看类型
type test1
删除键值对
del test4 
del test1 test2
修改键值对名称
RENAME test1 FBB
设置登录密码
CONFIG SET requirepass 123456
auth 123456CONFIG GET requirepassredis-cli -h  192.168.11.146 -p 6379 -a 123456     #登录
1、string类型

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

追加
192.168.11.146:6379> append FBB niu
(integer) 3
STRLEN FBB     查看长度
(integer) 12
自增、自减
192.168.11.146:6379> incrby   myket  10 自增   10          192.168.11.146:6379> decrby    mykey 5     自减 5
设置生命周期
192.168.11.146:6379> SETEX mykey 15 hello   创建一个生命周期为15秒 key:mykey  value:hello  
移值到其他库
192.168.11.146:6379> get mykey
"10"
192.168.11.146:6379> move mykey 1    转移到目标库
(integer) 0
创建多个键值对
192.168.11.146:6379> mset  test1 1  test2 2  test3 3   #创建多个键值对
OK
192.168.11.146:6379> keys *
1) "test3"
2) "test2"
3) "test1"
192.168.11.146:6379> mget test1 test2 test3    
1) "1"
2) "2"
3) "3"
2、list类型
创建列表
192.168.11.146:6379> LPUSH mykey a b c d     创建列表
192.168.11.146:6379> LRANGE mykey 0 -1       查看列表全部信息
192.168.11.144:6379> LRANGE mykey 2 -1
1) "b"
2) "a"
192.168.11.144:6379> LRANGE mykey 1 2
1) "c"
2) "b"
插入数据
192.168.11.144:6379> LPUSHx mykey e      #插入新的(只能插入已存在的列表)从头插
(integer) 5
删除
192.168.11.144:6379> LPOP mykey    从头删除
指定删除
192.168.11.144:6379> lrem mykey 2 a    #删除两个a的值
查看元素数量
192.168.11.144:6379> llen mykey
(integer) 4
查看指定位置元素
192.168.11.144:6379> LPUSH mykey a b c d e f   #创建表(倒序排序)
(integer) 6
192.168.11.144:6379> LINDEX mykey  4    #查看指定值的信息
"b"
192.168.11.144:6379> LSET mykey 5 10    #替换指定的值
192.168.11.144:6379> LINSERT mykey  before  10 9   在10前加一个数值9
(integer) 7
192.168.11.144:6379> LINSERT mykey  after   10 9    在10后面加一个数值9
(integer) 7192.168.11.144:6379> RPUSH mykey1 a b c d   #正序排序
3、hash 散列

用来存储对象,对象类别和ID构成一个键名
hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少

hash是一个键值对,包含多个对象和对象的值。
myhash就是一个hash值,一个hash值可以存42亿个键值对。

创建
192.168.11.144:6379> hset myhash id1 1 id1  2 
添加hash值
192.168.11.144:6379> hsetnx myhash id3 3      (key不能和表中的重复)
(integer) 1
查看hash
192.168.11.144:6379> hset myhash qq 1 qq2 2 qq3 3 
(integer) 3
192.168.11.144:6379> HGET myhash qq
"1"
192.168.11.144:6379> hmget myhash id1 id2    #查看多个值192.168.11.144:6379> hgetall myhash    #查看所有的key对应的值192.168.11.144:6379> hkeys myhash      #只看key192.168.11.144:6379> hvals myhash      #只看对象的值(value)
删除hash
192.168.11.144:6379> hdel myhash qq
4、set 无序集合

无序集合中元素类型只能是string,无序集合当中元素具有唯一性,不允许重复
**应用场景:**可以使用set数据,追踪唯一性的数据,比如ip地址,或者根据客户的id区分不同客户购买的同一产品。

创建
192.168.11.144:6379> sadd myset a b b c
(integer) 3
查看集合元素
192.168.11.144:6379> smembers myset
1) "b"
2) "a"
3) "c"
添加值
192.168.11.144:6379> sadd myset a d  e 
(integer) 2
获取集合元素数量
192.168.11.144:6379> scard myset
(integer) 5
随机获取
192.168.11.144:6379> srandmember myset
删除
192.168.11.144:6379> spop myset           随机删除
"b"
192.168.11.144:6379> srem myset   a       指定删除一个
(integer) 1
192.168.11.144:6379> srem myset   e  c     指定删除多个
(integer) 2
不同集合元素移动
192.168.11.144:6379> smove    myset   myset2       d 移出集合   移入集合  需要移出的值(integer) 1
5、 zset 有序集合

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

创建
192.168.11.144:6379> zadd myzet 1 "one"    
(integer) 1
192.168.11.144:6379> zadd myzet 2 "two"
(integer) 1
192.168.11.144:6379> zadd myzet 3 "three"  4 "four"
(integer) 2
排序
192.168.11.144:6379> zrange myzet 0 -1 withscores    #按照权重大小进行排序
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
查看
192.168.11.144:6379> zrange myzet 0 -1     #集合内对象
1) "one"
2) "two"
3) "three"
4) "four"
192.168.11.144:6379> zrangebyscore myzet 2  5    获取权重在2--5之间的值   2<=x<=5
1) "two"
2) "three"
3) "five"
4) "four"

删除

192.168.11.144:6379> zrem myzet "one"
(integer) 1

相关文章:

Redis 缓存中间件 缓存数据库

Redis 缓存中间件 缓存数据库 nginx web服务 PHP 转发动态请求 tomcat web页面也可以转发动态请求 springboot 自带tomcat 所有的数据库不支持高并发&#xff0c;一旦访问量激增&#xff0c;数据库很快就会崩溃。 Redis 非关系型数据库 nosql not only sql 不仅仅是sql 键值对…...

51、PHP 实现简单的快速排序

题目&#xff1a; PHP 实现简单的快速排序 描述&#xff1a; function simpleQuickSort(array $list) {$length count($list);if( $length < 1){return $list;}else{$pivot $list[0];$left_list array();$right_list array();for($i 1; $i < $length; $i){if($lis…...

如何应对机器视觉软件中时间篡改与许可绕过的挑战?

在机器视觉行业&#xff0c;软件许可绕过和时间篡改问题存在&#xff0c;这些行为对企业的正常运营和市场竞争力造成了严重威胁。机器视觉软件通常包含复杂的算法和大量的数据处理能力&#xff0c;广泛应用于制造、医疗和安防等领域。然而&#xff0c;未经授权的使用和人为篡改…...

python文件的读写

要在Python中读写文件&#xff0c;你可以使用以下方法&#xff1a; 1. 打开文件&#xff1a;使用open()函数打开文件&#xff0c;它接受两个参数&#xff1a;文件名和模式。模式可以是只读&#xff08;r&#xff09;、写入&#xff08;w&#xff09;、追加&#xff08;a&#…...

2024下《网络工程师》案例简答题,刷这些就够了!

距离2024下半年软考已经越来越近了&#xff0c;不知道今年备考软考网络工程师的同学们开始准备了吗&#xff1f; 简答题一直是网工拿分的重点区域&#xff0c;对于许多考生来说&#xff0c;也往往是最具挑战性的部分。今天我就把那些重要的案例简答题类型整理汇总给大家&#x…...

Astro 实现TodoList网页应用案例

Astro 是一个现代化的静态站点生成器和前端框架&#xff0c;它具有独特的设计理念&#xff1a;岛屿架构。它允许开发人员使用组件化的方式构建内容优先的网站&#xff0c;将各种技术栈&#xff08;如React、Vue、Svelte等&#xff09;的组件无缝集成到同一个项目中。 1、创建项…...

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目&#xff1a;** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义&#xff1a;** 随着旅游业的快速发展&#xff0c;人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能&#xff0c;但在…...

MySQL存储

目录 1. MySQL存储引擎概述 2. 存储引擎的作用 3.存储引擎类型 4. 查看支持的存储引擎 6. InnoDB存储引擎 7. MyISAM与InnoDB的区别 8. 存储引擎的选择 9. 修改默认存储引擎 1. MySQL存储引擎概述 在MySQL中&#xff0c;数据通过不同的技术存储在文件&#xff08;或内存…...

手势传感器 - 从零开始认识各种传感器【第十八期】

手势传感器|从零开始认识各种传感器 1、什么是手势传感器 手势传感器是一种能够感知人类手势或动作的传感器。它可以捕捉、识别和解释人类的手部动作或姿势&#xff0c;并将其转换成电信号或数字信号&#xff0c;通过识别人体的手势动作来实现与电子设备的交互&#xff0c;如控…...

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度&#xff0c;尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图&#xff0c;然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板&#xff0c;勾上真省钱&#xff0c;然后保…...

移动式气象设备:灵活应对,精准监测的气象先锋

在气象监测领域&#xff0c;随着科技的进步和需求的多样化&#xff0c;移动式气象设备逐渐崭露头角&#xff0c;成为现代气象观测中不可或缺的一部分。这些设备以其灵活性高、部署迅速、监测精准的特点&#xff0c;广泛应用于应急响应、农业生产、户外探险、科研考察等多个领域…...

【AI落地应用实战】DAMODEL深度学习平台部署+本地调用ChatGLM-6B解决方案

ChatGLM-6B是由清华大学和智谱AI开源的一款对话语言模型&#xff0c;基于 General Language Model (GLM)架构&#xff0c;具有 62亿参数。该模型凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性&#xff0c;已经成为在学术界和工业界引起了广泛关注。 本篇将介…...

英伟达开始引领下一波浪潮:物理AI

这可能会是AI技术形态的一个转折点,大模型的下一个形态&#xff0c;不再是人和模型一轮一轮的即时问答了。 当地时间 7 月 29 日&#xff0c;在美国丹佛举行的第 51 届 SIGGRAPH 计算机图形学会议上&#xff0c;英伟达创始人、CEO 黄仁勋与 Meta 创始人、CEO 马克・扎克伯格进…...

SQLServer设置端口

在SQL Server中设置端口是一个涉及多个步骤的过程&#xff0c;这些步骤旨在确保数据库服务器能够在新指定的端口上安全、高效地运行。以下是对SQL Server设置端口的详细阐述&#xff0c;包括默认端口、更改端口的步骤、验证更改以及相关的安全考虑。 一、SQL Server默认端口 …...

诊断技巧分享 | 用WPS500压力传感器测试空调压力波形?

最近收到咨询&#xff0c;问我们WPS500压力传感器能不能测汽车的空调压力波形&#xff1f;如果可以的话&#xff0c;应该怎么测&#xff1f; 是可以的。WPS500压力传感器的最大测试压力是34.5 bar&#xff0c;匹配对应的管子的接头&#xff0c;可以测试空调的动态波形。 要做这…...

W1R3S靶机全通详细教程

文章目录 w1r3s主机发现主机扫描 端口扫描tcp端口扫描UDP扫描漏洞扫描 攻击面分析FTP渗透匿名登录 web渗透目录爆破 cuppa cms文件包含漏洞getshell提权 w1r3s 引言 近些日子看红笔大佬的靶机精讲视频时&#xff0c;他的一句话让我感受颇深&#xff0c;很多视频在讲解时&…...

GitHub Revert Merge Commit的现象观察和对PR的思考

文章目录 前言Pull Request 为什么会是这样&#xff1f;Pull Request Branch的差异 ?Two Dot Diff和Three Dot Diff 老生常谈&#xff1a; Merge 和 Rebasegit mergegit rebase Revert Main分支中的一个Merge Commit现象描述解决方案: Revert Feature分支中的一个Merge Commi…...

使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 HelloApplication.java&#xff1a;package com.example.dr295cmonth7;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; i…...

友盟U-APM——优秀的前端性能监控工具

在数字化转型浪潮的推动下,移动应用已成为企业连接用户、驱动业务增长的核心载体。然而,随着应用复杂度的日益提升,用户对于应用性能稳定性的期待也水涨船高。面对应用崩溃、卡顿、加载缓慢等频发问题,如何确保应用的流畅运行,成为产研团队亟待解决的关键挑战。在此背景下,友盟…...

人工智能与机器学习原理精解【10】

文章目录 数值优化基础理论线性模型基本形式特性应用学习算法 向量输入的二次函数的凸性概述二次函数的一般形式凸函数的定义分析二次函数的凸性注意 详细解释向量输入的二次函数的凸性分析一、二次函数的一般形式二、凸函数的定义三、二次函数的Hessian矩阵四、判断二次函数的…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一&#xff0c;是基于哈希表的Map接口非同步实现。它允许使用null键和null值&#xff08;但只能有一个null键&#xff09;&#xff0c;并且不保证映射顺序的恒久不变。与Hashtable相比&#xff0c;Hash…...