Redis相关介绍

概念
Redis:非关系型数据库(non-relational),Mysql是关系型数据库(RDBMS)
Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库
为什么使用NoSQL
关系型 数据库无法应对每秒上万次 的读写请求
表中的存储记录 数量有限
无法简单的通过增加硬件、服务节点来提高系统性能
关系型数据库大多是收费的,对硬件要求较高,软硬 件成本较高
NoSQL优势
大数据量,高性能
灵活的数据模型,无需事先为数据建立字段,随时可以存储自定义的数据格式
高可用,在不影响性能的情况下,可以方便的实现高可用的框架,能很好的解决关系型数据库扩展性差的问题
低成本
NoSQL劣势
无关系,数据之间是无联系的
不支持标准的SQL,没有公认的NoSQL标准
没有关系型数据库的约束,大多数也没有索引的概念
没有事务,不能依靠事务实现ACID
没有丰富的数据类型(数值,日期,字符,二进制,大文本等)
Redis安装和使用
官网:Redis官网
中文版:Redis中文版网址
下载
window版本
网址:window版本网址
使用步骤
下载Redis-x64-3.2.100.zip
解压,双击:redis-server.exe,如果启动失败需要手动配置:redis.windows.conf
在当前目录下,选择目录显示框,输入:cmd,进入命令行
输入redis-server.exe redis.windows.conf 回车
出现上图的图形,则证明该服务已启动
双击:redis-cli.exe,打开Redis自带客户端,通过该客户端可以执行和Redis的数据交互
输入:set,自动弹出语法格式
将光标通过空格键移到key上,输入key的值,光标通过空格键移到value上,输入value的值,回车。
出现该结果代表值保存成功
通过:get 方法取值
Linux版本
网址:Redis官网
安装步骤
通过Xftp工具,将下载在window上的压缩包上传到Linux上目录:/home/soft
解压到Linux上目录:usr/local目录:
解压命令:tar -zxvf 压缩包名 -C usr/local/
编译Redis文件,Redis是使用C语言编写的。会使用gcc编译器
在解压后的Redis安装目录执行make命令,
注意事项:
make命令执行过程中可能报错,根据控制台输出的错误信息解决
错误一:gcc命令找不到,是由于没有安装gcc导致
解决方式:安装gcc编译器后执行make命令
安装gcc编译器:在src目录下使用yum命令:yum -y install gcc
错误二:error:jemalloc/jemalloc.h:No such file or directory
解决方式执行:make MALLOC=libc
make命令之后,执行:make install,该命令类似于windows系统中配置环境变量,这样我们就可以在任何地方执行Redis的命令
Linux中的使用
开启Redis
Linux中的redis-server是服务窗口,redis-cli是客户端窗口
在src目录下执行:
打开服务器
前台启动:./redis-server
后台启动:./redis-server &(常用后台启动方式,如果修改了配置文件,则每次启动都需要指向配置文件)
打开客户端,执行:./redis-cli 开启命令行
关闭Redis
在客户端中执行:shutdown
在src目录下执行:./redis-cli shutdown(如果有密码:./redis-cli -a 密码 shutdown)
Redis客户端
redis命令行客户端
直接连接redis(默认ip:127.0.0.1,端口:6379):./redis-cli
指定IP和端口号连接redis:./redis-cli -h 127.0.0.1 -p 6379
-h redis主机IP(可以指定任意redis服务器)
-p 端口号(不同的端口号表示不同的redis应用)
远程客户端连接Linux上redis
网址:远程客户端网址
国产:客户端
Redis服务器有安全保护措施,默认只有本机可以访问,配置信息在Redis安装目录下的redis.conf文件。修改此文件的两个设置。
远程连接redis需要修改redis主目录下的redis.conf配置文件:
bind ip 绑定ip,此行注释
protected-mode yes 保护模式改为no
使用vi/vim命令修改redis.conf文件,修改文件前备份此文件,执行cp命令
步骤
在/usr/local/redis/目录下执行: cp redis.conf bak_redis.conf
使用vim/vi命令,执行:vim redis.conf 再执行:GG 将光标移至最后一行,再执行:/bind 按回车查找,执行:n 往下查找,找到 bind 127.0.0.1后将其注释掉,
找到protected -mode yes,将yes改成no
执行:esc按键,输入“:qw”,完成保存退出
修改结束后,每次启动redis时,需要指定redis.conf
进入src目录下执行:./redis-server ../redis.conf &
查看 防火墙的状态,执行:systemctl status firewalld
关闭防火墙命令:service firewalld stop
编程 客户端连接Linux的redis
Redis基本操作命令
1、沟通命令
命令行输入:ping,返回PONG,表示服务端运行正常
2、查看当前数据库中key的数目:dbsize
作用:返回当前数据库的 key 的数量,默认访问第0个库
3、Redis默认使用16个 库
可以在conf配置文件中修改:databases的值
4、切换库命令:select
执行:select index
5、删除当前库的数据:flushdb
删除当前库中的所有数据
6、redis自带的客户端退出当前redis连接:exit或quit
客户端退出连接,服务端继续运行
Redis的key的操作命令
keys:查询自己需要的key
语法:keys pattern
作用:查找所有符合模式pattern的key,pattern可以使用通配符
通配符:
*:表示0至多个字符,例如:keys * 查询所有的key
?:表示单个字符,例如:wo?d,配置word,wold
注意:Redis是单线程接收命令
exists:查询key是否存在
语法:exists key [key...]
作用:判断key 是否存在
expire:设置key的存活时间
语法:expire key seconds
作用:设置key的生存时间,超过时间,key自动删除。单位是秒
返回值:设置成功返回数字1,其他情况是0
ttl:查询key的剩余存活时间
语法:ttl key
作用:以秒为单位,返回 key的 剩余生存时间(ttl:time to live)
返回值:
-1:没有设置key的生存时间,key永不过期
-2:key不存在
数字:key的生存时间,秒为单位
type
语法:type key
作用:查看key所存储值的数据类型
返回值:字符串表示的数据类型
none(key 不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)
del
语法:del key[key...]
作用:删除存在的key,不存在的key忽略
返回值:数字,删除的key的数量
五中数据类型
字符串string
字符串类型是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制,序列化后的数据,JSON化的对象甚至是一张图片,最大512M
基本命令
set key
相关文章:
Redis相关介绍
概念 Redis:非关系型数据库(non-relational),Mysql是关系型数据库(RDBMS) Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库 为什么使用NoSQL 关系型 数据库无法应对每秒上万次 的读写请求 表中的存储记录 数量有限 无法简单…...
Transformer实战-系列教程13:DETR 算法解读
🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 1、物体检测 说到目标检测你能想到什么 faster-rcnn系列,开山之作&…...
代码随想录刷题笔记 DAY 25 | 组合问题 No.77 | 组合求和III No.216 | 电话号码的字母组合 No.17
文章目录 Day 2501. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 02. 组合求和III(No. 216)2.1 题目2.2 笔记2.3 代码 03. 电话号码的字母组合(No. 17)3.1 题目3.2 笔记3.3 代码3.4 补充 Day 25 01. 组合问…...
upload-labs文件上传漏洞靶场
第一关 <?php eval ($_POST[123]);?>发现他这个是通过客户端前端写了一个限制 我们禁用srcipt即可 蚁剑成功打开 第二关 我们上传文件2.php它提示我们文件类型不正确 我们可以联想到做了后缀检测 我们通过burp抓包修改后缀 第三关 我们上传一个.php文件不可上…...
企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密处理
随着网络技术的不断发展,企业的生产运营也加大了步伐,网络为企业的生产运营提供了强有力保障,但网络是一把双刃剑,给企业带来便利的同时也为企业带来了严重的数据威胁。春节期间,云天数据恢复中心接到很多企业的值班人…...
STM32-寄存器和HAL库以及如何使用
在电子工程领域,“寄存库”和“HAL库”都是与微控制器(MCU)编程紧密相关的概念。 寄存器(Register) 含义: 在电子工程领域,特别是计算机体系结构和微控制器设计中,寄存器是一种非常…...
手动下载spacy的en_core_web_sm模型
手动下载 首先,用下面连接下载模型。我下载了 .tar.gz 格式。 然后提取它并通过指定所需子文件夹的路径将其加载到代码中。为了确保路径正确,您应该进入包含 config.cfg 文件的文件夹。 https://github.com/explosion/spacy-models/releases 例子代码…...
Sentinel 流控-链路模式
链路模式 A B C 三个服务 A 调用 C B 调用 C C 设置流控 ->链路模式 -> 入口资源是 A A、B 服务 package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService; import org.springframework.beans.factory.annotatio…...
Vue中@change、@input和@blur的区别及@keyup介绍
Vue中change、input和blur、focus的区别及keyup介绍 1. change、input、blur、focus事件2. keyup事件3. 补充:el-input的change事件自定义传参 1. change、input、blur、focus事件 change在输入框发生变化且失去焦点后触发; input在输入框内容发生变化后…...
洛谷: P7910 [CSP-J 2021] 插入排序
题目链接:P7910 [CSP-J 2021] 插入排序 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 1.定义结构体,将输入数据和它是第几位绑定起来。增加一个数组f[x],记录原来序列中的第x个在新序列中的位置,每执行一次修改操作,我们…...
Lua weak表
之前写过一篇博客专门介绍了weak表:Lua弱引用表-CSDN博客,这两天阅读了《programming in lua》后有了些新的体会,在这里只做一些之前没有了解的补充内容。 定义 Lua 自动进行内存的管理。程序只能创建对象(表,函数等…...
DS:二叉树的顺序结构及堆的实现
创作不易,兄弟们给个三连!! 一、二叉树的顺序存储 顺序结构指的是利用数组来存储,一般只适用于表示完全二叉树,原因如上图,存储不完全二叉树会造成空间上的浪费,有的人又会问,为什么…...
python从入门到精通(十九):python的多线程详细使用
python的多线程详细使用 1.什么是线程2.线程的作用3.导入线程4.创建线程启动线程线程阻塞线程的方法守护线程线程阻塞2个都是守护线程1个是守护线程线程间通信1.什么是线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指…...
【More Effective C++】条款19:了解临时对象的来源
临时对象:没有命名,不会出现在源代码中 帮助隐式类型转换成功而创建的对象 编译器创建一个类型为string的临时对象,以buffer作为参数,调用string的构造函数;str绑定到了这个临时对象上函数返回时,这个临时…...
站在C/C++的肩膀速通Java面向对象
默认学过C或C,对变量、表达式、选择、循环都会。 运行特征 解释型语言(JavaScript、Python等) 源文件-(平台专属解释器)->解释器中执行编译型语言(C、Go等) 源文件-(平台编译器)->平台可执行文件Java 源文件-(…...
【AI视野·今日Robot 机器人论文速览 第七十八期】Wed, 17 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Wed, 17 Jan 2024 Totally 49 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Safe Mission-Level Path Planning for Exploration of Lunar Shadowed Regions by a Solar-Powered Rover Authors Olivier L…...
flask cors 跨域问题解决
座右铭:怎么简单怎么来,以实现功能为主。 欢迎大家关注公众号与我交流 环境安装 pip install -U flask-cors 示例代码 from flask import Flask from flask_cors import CORS, cross_originapp Flask(__name__) CORS(app, supports_credentialsTrue)…...
18 19 SPI接口的74HC595驱动数码管实验
1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101…...
计算机网络概述习题拾遗
学习目标: 自下而上第一个提供端到端服务的层次 路由器、交换机、集线器实现的功能层 TCP/IP体系结构的网络接口层对应OSI体系结构的哪两个层次 分组数量对总时延的影响 如果这篇文章对您有帮助,麻烦点赞关注支持一下动力猿吧! 学习内容…...
你的电脑关机吗
目录 程序员为什么不喜欢关电脑? 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑? 大部分人都会选择将电脑进行关机操作。其实这不难理解,毕竟人类都需要…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
