Redis使用基础

1 redis介绍

在这里插入图片描述
Redis(Remote Dictionary Server ),即远程字典服务 ! 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
在这里插入图片描述

redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!

1.1 redis优势 memcache

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势:

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

1.2 应用场景

redis的应用越来越多,已经不单单只是为了解决高速缓存的问题。redis官方更是推出了 Redis Stack 模块,帮助企业更加快速的构建一些复杂的开发场景。

关于它当下比较流行的十大场景,可以看一下这篇文章:(https://blog.csdn.net/m0_51358164/article/details/125927452)

2 安装redis

虽然redis现在已经支持在windows上进行安装了,但是在实际的开发应用中还是在Linux系统中安装使用。

鉴于我们之前已经学习过Linux系统的基本操作,因此我们这里直接安装到Linux系统中【依然是VM虚拟机】。

具体的安装过程,参考Linux开发环境部署讲义

3 redis基础

在这里插入图片描述

3.1 数据库说明

redis默认有16个数据库,这些数据库分别用【0-15】的索引值来表示。并且redis是没有表的概念的,你可以把它的每个数据库,看成一张表。

# 切换数据库,2代表数据库索引
select 2

在这里插入图片描述

在配置文件中有说明,你也可以修改它,改完记得重启服务。

在这里插入图片描述

3.2 连接命令

redis 客户端(redis-cli)在连接redis数据库时执行的命令。

# 查看命令帮助
redis-cli --help
# 语法结构为
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]-h <hostname>      服务器主机名,默认为 127.0.0.1-p <port>          服务器端口,默认为 6379-s <socket>        服务器套接字,覆盖主机名和端口-a <password>      连接到服务器时要使用的密码。你也可以使用 REDISCLI_AUTH 环境变量来更安全地传递这个密码(如果两者都使用,这个参数会优先使用)-u <uri>           服务器URI-r <repeat>        执行指定的命令 N 次-i <interval>      当使用 -r 时,每个命令等待 <interval> 秒。可以指定亚秒时间,如 -i 0.1-n <db>            数据库编号-x                 从 STDIN(标准输入)读取最后一个参数。-d <delimiter>     用于原始格式的多块分隔符 (默认: \n)-c                 启用集群模式(遵循 -ASK-MOVED 的重定向)--raw              对回复使用原始格式 (当 STDOUT 不是 tty 时默认)--no-raw           强制格式化输出,即使 STDOUT 不是 tty--csv              CSV格式输出--stat             打印关于服务器的滚动统计信息: mem, clients,...--latency          进入特殊模式连续采样延时。如果你在交互会话中使用这种模式,它会一直运行,显示实时数据。否则,如果指定了——raw或——csv,或者将输出重定向到非 TTY,它对1秒的延迟进行采样 (您可以使用 -i 来更改间隔),然后产生一个输出并退出。--latency-history  比如延迟,但是跟踪延迟会随着时间变化。默认时间间隔为15秒,请使用-i修改。--latency-dist     将延迟显示为光谱,需要xterm 256 色。默认时间间隔为1秒,请使用-i修改。--lru-test <keys>80-20 分布模拟缓存工作负载。--replica          模拟一个副本,显示从主机接收到的命令。--rdb <filename>   从远程服务器传输 RDB 转储到本地文件。--pipe             从stdin向服务器传输原始Redis协议。--pipe-timeout <n>--pipe 模式下,在发送完所有数据后,如果 <n> 秒内未收到回复,则错误终止。默认超时时间为: 30。用 0 表示永远等待。--bigkeys          Redis 键的样本,寻找有许多元素的键(复杂性)--memkeys          Redis 键的样本,查找占用大量内存的键--memkeys-samples <n> Redis 键的样本,查找占用大量内存的密钥,并允许定义要采样的关键元素的数量--hotkeys          寻找热键的 Redis 键样本,仅在 maxmemory-policy 为 *lfu 时有效。--scan             使用 SCAN 命令列出所有键--pattern <pat>--scan 一起使用,可以指定一个 SCAN 模式--intrinsic-latency <sec> 运行一个测试来测量内在的系统延迟,测试将运行指定的秒数。--eval <file>      使用 Lua 脚本在 <file> 发送 EVAL 命令。--ldb--eval 一起使用,启用 Redis Lua 调试器。--ldb-sync-mode    与 --ldb 类似,但使用同步 Lua 调试器,在这种模式下,服务器被阻塞,脚本更改不会从服务器内存回滚。--cluster <command> [args...] [opts...]  集群管理器命令和参数 (参见下面)--verbose          详细模式--no-auth-warning  在命令行界面上使用密码时不显示警告信息--help             输出这个帮助并退出--version          输出版本并退出

操作示例:

# 打开本地默认的redis服务 127.0.0.1:6379
redis-cli# 根据端口号打开本地的redis服务
redis-cli -p port# 根据端口号和密码打开本地redis
redis-cli -p port -a password# 根据IP地址、端口号、密码、打开远程redis
redis-cli -h host -p port -a password# 最后接shutdown可关闭redis服务,或在连接工具中使用shutdown也可关闭redis
redis-cli -h IP地址 -p 端口号 -a 密码 shutdown# redis-cli连接工具关闭服务
127.0.0.1:6379> shutdown  # 直接关闭服务
127.0.0.1:6379> shutdown nosave # 直接关闭服务,不保存所有数据
127.0.0.1:6379> shutdown save	# 关闭服务,并保存所有数据

3.3 key命令

Redis 键命令用于管理 redis 的键,Redis 键命令的基本语法如下:

命令符 keyName [数值]

127.0.0.1:6379> set mykey hello,world!
OK
127.0.0.1:6379> get mykey
"hello,world!"
127.0.0.1:6379> del mykey
(integer) 1

上面实例演示使用 set 命令向 Redis 添加一个 KEY,通过 get 命令获取 KEY 的数据,最后使用 del 命令删除 KEY。如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0

常用的用来操作key的命令

命令返回内容说明
set name jackok提示添加一个key为name,value为jack的键值对。如果key已存在,内容替换
get namevalue值查看key为name的value值
dump name序列化值序列化给定 key,并返回被序列化的值
rename name usernameok提示修改key的名字,name变为username
del name整数(删除数量)删除指定key,可以后面跟 , 号写多个,同时删除多个
exists name整数判断key为name是否存在,1为存在,0为不存在
move name 1整数移动key为name的数据到数据库1中,本库删除
ttl name整数(秒)查询key为name的数据有效时间
>0 有存活时间,且时间正在倒计时
-1 一直有效
-2 已失效
expire name 15整数(影响数量)设置key为name的值,15秒后失效
expireat name 1677341411整数(影响数量)设置到期时间戳,就是指定具体的年与日时分秒到期,网上有转换工具
persist name整数(影响数量)移出到期时间,变为-2的key不能通过该命令恢复活性,需要重新set
randomkeykey名从当前数据库中随机返回一个 key
type name数据类型获取改值的数据类型
keys *键名称查找符合匹配规则的key名称,如果为空返回(empty array)
*代表0到任意个,?代表一个
例如:keys *a*keys ?a?
flushallok提示清空所有库的内容,注意这个命令一定会成功
clear无返回内容清空当前操作屏幕

3.4 键值设计规约

key命名风格

**【推荐】**Redis key命名需具有可读性以及可管理性,不该使用含义不清的key以及特别长的key名;

强制】以英文字母开头,命名中只能出现小写字母、数字、英文点号(.)和英文半角冒号(😃;

强制】不要包含特殊字符,如下划线、空格、换行、单双引号以及其他转义字符;

命名规范

强制】命名规范:业务模块名:业务逻辑含义:其他:value类型

1 )业务模块名:具体的功能模块

2)逻辑含义段:

强制】不同业务逻辑含义使用英文半角冒号(:)分割,

**【强制】**同一业务逻辑含义段的单词之间使用英文半角点号 (.)分割,用来表示一个完整的语义

3)value类型:

**【强制】**Redis key命名以key所代表的value类型结尾,以提高可读性;

示例:user:basic.info:{userid}:string

value 设计

强制】:拒绝bigkey(防止网卡流量、慢查询)。

String类型控制在10KB以内,Hash、List、Set、ZSet元素个数不要超过5000。

更多学习,点击这里学习Redis支持的数据类型。

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

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

相关文章

PostgreSQL主从复制配置

本文主要介绍基于pg_basebackup实现主从复制&#xff08;异步流复制&#xff09; MASTER节点安装的方法可以看这篇文章 PostgreSQL YUM安装_yum install postgresql-CSDN博客 关于基本的配置就不作过多的介绍了&#xff0c;直接开始 MASTER节点 首先在master节点创建一个用于…

2025 OWASP十大智能合约漏洞

随着去中心化金融&#xff08;DeFi&#xff09;和区块链技术的不断发展&#xff0c;智能合约安全的重要性愈发凸显。在此背景下&#xff0c;开放网络应用安全项目&#xff08;OWASP&#xff09;发布了备受期待的《2025年智能合约十大漏洞》报告。 这份最新报告反映了不断演变的…

关于WPF中ComboBox文本查询功能

一种方法是使用事件&#xff08;包括MVVM的绑定&#xff09; <ComboBox TextBoxBase.TextChanged"ComboBox_TextChanged" /> 然而运行时就会发现&#xff0c;这个事件在疯狂的触发&#xff0c;很频繁 在实际应用中&#xff0c;如果关联查询数据库&#xff0…

[Qt]系统相关-网络编程-TCP、UDP、HTTP协议

目录 前言 一、UDP网络编程 1.Qt项目文件 2.UDP类 QUdpSocket QNetworkDatagram 3.UDP回显服务器案例 细节 服务器设计 客户端设计 二、TCP网络编程 1.TCP类 QTcpServer QTcpSocket 2.TCP回显服务器案例 细节 服务器设计 客户端设计 三、HTTP客户端 1.HTTP…

【LeetCode】--- MySQL刷题集合

1.组合两个表&#xff08;外连接&#xff09; select p.firstName,p.lastName,a.city,a.state from Person p left join Address a on p.personId a.personId; 以左边表为基准&#xff0c;去连接右边的表。取两表的交集和左表的全集 2.第二高的薪水 &#xff08;子查询、if…

【2024年华为OD机试】(B卷,100分)- 数据分类 (Java JS PythonC/C++)

一、问题描述 题目描述 对一个数据a进行分类,分类方法为: 此数据a(四个字节大小)的四个字节相加对一个给定的值b取模,如果得到的结果小于一个给定的值c,则数据a为有效类型,其类型为取模的值;如果得到的结果大于或者等于c,则数据a为无效类型。 比如一个数据a=0x010…

Java 8 实战 书籍知识点散记

一、Lambda表达式 1.1 Lambda表达式的一些基本概念 1.2 Lambda表达式的三个部分 // 简化前Comparator<Apple> byWeightnew Comparator<Apple>() {public int compare(Apple a1, Apple a2){return a1.getWeight().compareTo(a2.getWeight());}};//Lambda表达式Comp…

大数据中 TopK 问题的常用套路

大数据中 TopK 问题的常用套路 作者 Chunel Feng&#xff0c;编程爱好者&#xff0c;阿里巴巴搜索引擎开发工程师。开源项目&#xff1a;Caiss 智能相似搜索引擎 对于海量数据到处理经常会涉及到 topK 问题。在设计数据结构和算法的时候&#xff0c;主要需要考虑的应该是当前算…

GPU算力平台|在GPU算力平台部署MedicalGPT医疗大模型的应用教程

文章目录 一、GPU算力服务平台云端GPU算力平台 二、平台账号注册流程MedicalGPT医疗大模型的部署MedicalGPT医疗大模型概述MedicalGPT部署步骤 一、GPU算力服务平台 云端GPU算力平台 云端GPU算力平台专为GPU加速计算设计&#xff0c;是一个高性能计算中心&#xff0c;广泛应用…

Python - itertools- pairwise函数的详解

前言&#xff1a; 最近在leetcode刷题时用到了重叠对pairwise,这里就讲解一下迭代工具函数pairwise,既介绍给大家&#xff0c;同时也提醒一下自己&#xff0c;这个pairwise其实在刷题中十分有用&#xff0c;相信能帮助到你。 参考官方讲解&#xff1a;itertools --- 为高效循…

DEBERTA:具有解耦注意力机制的解码增强型BERT

摘要 近年来&#xff0c;预训练神经语言模型的进展显著提升了许多自然语言处理&#xff08;NLP&#xff09;任务的性能。本文提出了一种新的模型架构DeBERTa&#xff08;具有解耦注意力机制的解码增强型BERT&#xff09;&#xff0c;通过两种新技术改进了BERT和RoBERTa模型。第…

鸿蒙模块概念和应用启动相关类(HAP、HAR、HSP、AbilityStage、UIAbility、WindowStage、window)

目录 鸿蒙模块概念 HAP entry feature har shared 使用场景 HAP、HAR、HSP介绍 HAP、HAR、HSP开发 应用的启动 AbilityStage UIAbility WindowStage Window 拉起应用到显示到前台流程 鸿蒙模块概念 HAP hap包是手机安装的最小单元&#xff0c;1个app包含一个或…

[OpenGL]实现屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion, SSAO)

一、简介 本文介绍了 屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion, SSAO) 的基本概念&#xff0c;实现流程和简单的代码实现。实现 SSAO 时使用到了 OpenGL 中的延迟着色 &#xff08;Deferred shading&#xff09;技术。 按照本文代码实现后&#xff0c;可以实现以下…

MATLAB绘图时线段颜色、数据点形状与颜色等设置,介绍

MATLAB在绘图时&#xff0c;设置线段颜色和数据点的形状与颜色是提高图形可读性与美观性的重要手段。本文将详细介绍如何在 MATLAB 中设置这些属性。 文章目录 线段颜色设置单字母颜色表示法RGB 值表示法 数据点的形状与颜色设置设置数据点颜色和形状示例代码 运行结果小结 线段…

AIGC视频生成国产之光:ByteDance的PixelDance模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance&#xff0c;论文于2023年11月发布&#xff0c;模型上线于2024年9月&#xff0c;同时期上线的模型还有Seaweed&…

mac 电脑上安装adb命令

在Mac下配置android adb命令环境&#xff0c;配置方式如下&#xff1a; 1、下载并安装IDE &#xff08;android studio&#xff09; Android Studio官网下载链接 详细的安装连接请参考 Mac 安装Android studio 2、配置环境 在安装完成之后&#xff0c;将android的adb工具所在…

# [0114] Task01 《数学建模导论》P1 解析几何与方程模型

链接&#xff1a;https://www.datawhale.cn/activity/124 整理的相关代码库 GitHub 页面链接 绪论 姜启源&#xff1a;“数学建模就是建立数学模型解决实际问题” 本质还是解应用题&#xff0c;只是曾经的“小明买糖”变成了如今的“嫦娥探月”。 SEIR 模型&#xff0c;也…

NewStar CTF week1 web wp

谢谢皮蛋 做这题之前需要先去学习一些数据库的知识 1 order by 2 1可以理解为输入的id&#xff0c;是一个占位符&#xff0c;按第二列排序用来测试列数&#xff0c;如果没有两列则会报错-1 union select 1,2 -1同样是占位符&#xff0c;union的作用是将注入语句合并到原始语句…

备赛蓝桥杯之第十五届职业院校组省赛第二题:分享点滴

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

C语言初阶牛客网刷题——JZ17 打印从1到最大的n位数【难度:入门】

1.题目描述 牛客网OJ题链接 题目描述&#xff1a; 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。 用返回一个整数列表来代替打印n 为正整数&#xff0c;0 < n < 5 示例1 输入&…