零基础学习Redis(3) -- Redis常用命令
Redis是一个 客户端-服务器 结构的程序,Redis客户端和服务器可以在同一台主机上,也可以在不同主机上,客户端和服务器之间通过网络进行通信。服务器端负责存储和管理数据。客户端则可以通过命名对服务端的数据进行操作。
Redis客户端有多种,1.自带的命令行客户端(redis-cli),2.带图形界面的客户端(不推荐使用),3. 基于Redis的api自行开发的客户端(类似于mysql的jdbc,工作中最常用的)
这里使用redis-cli来演示命令的使用,在linux服务器中输入 redis-cli即可打开客户端:

1. set get 命令
set命名和get命令 是redis中最常用也是最核心的两个命令。
- set:把key可value存入redis
- get:根据key查找value
使用方式:
set key value

这里key和value默认是字符串类型,可以加上单引号或双引号也可不加 ,redis中命令不区分大小写。
get key

当key不存在时get命令会返回nil,和null类似
2. keys
keys命令可以进行模糊查询,返回匹配到的key,当我们输入keys时会提示要填写pattern也就是匹配的规则

pattern规则:
这里我们先添加一些数据方便演示

? 匹配任意一个字符

* 匹配任意多个字符包括0个

[abc..] 只能匹配括号中的字符

[^abc]排除括号中的字符

[a-d]匹配ad区间内的字符

注意:keys命名的复杂度是O(N) ,所以在线上环境要慎重使用keys,特别是 keys *,因为线上环境中的key可能会非常多,而redis是一个单线程的服务器,如果使用keys * 语句会查询所有的key,执行时间可能会很长,导致其他客户端的服务被阻塞超时,redis通常又是作为缓存,此时超时的请求就会直接在数据库中查,就可能会有大量的请求短时间到达数据库,导致数据库瘫痪
3. exists
exists命令用于判断一个或多个key是否存在,会返回key存在的个数(注意redis中key不能重复)
exists key1 key2 ...

hello 和key1存在key不存在所以返回2,redis是以哈希表的形式来组织数据的,所以判断某个key是否存在的操作是O(1)级别的
注意:Redis客户端要对数据操作,会通过网络发送命令给服务器,所以redis命令大多都是支持批量操作的,就可以通过一次网络通信操作多个数据,节省时间
4. del
del key1 key2 ...
删除一个或多个key返回删除的数量

hallo和hllo存在,key不存在,所以返回2,再次查询,可以看到删除成功:

5. exprire
exprire key seconds
给指定的key设置过期时间,单位为秒,从设置起,如果key存活超过过期时间,key就会被删除,设置成功返回1 失败返回0

对计算机来说,秒是一个比较长的时间单位,于是redis还提供了一个pexpire用于设置毫秒级的过期时间:
pexprie key milliseconds
redis 的过期策略是如何实现的?(面试题)
- 定期删除:定期抽取一部分数据检查是否到达过期时间(因为redis是单线程,如果数据量大抽取全部数据会导致阻塞)
- 惰性删除:由于定期删除每次只检查一部分数据,很有可能某个数据到达过期时间了还没有被删除,当这个数据被访问到时,redis就会立刻删除这个key。
虽然有了上面两种策略,但整体的删除效果还是一般,于是redis还提供了一系列的内存淘汰策略(这里不展开叙述感兴趣可以自行了解) 。
注意:redis并没有采用定时器的方式来实现过期策略
6. type
type key
返回key对应的value的数据类型
相关文章:
零基础学习Redis(3) -- Redis常用命令
Redis是一个 客户端-服务器 结构的程序,Redis客户端和服务器可以在同一台主机上,也可以在不同主机上,客户端和服务器之间通过网络进行通信。服务器端负责存储和管理数据。客户端则可以通过命名对服务端的数据进行操作。 Redis客户端有多种&a…...
响应式Web设计:纯HTML和CSS的实现技巧-1
响应式Web设计(Responsive Web Design, RWD)是一种旨在确保网站在不同设备和屏幕尺寸下都能良好运行的网页设计策略。通过纯HTML和CSS实现响应式设计,主要依赖于媒体查询(Media Queries)、灵活的布局、可伸缩的图片和字…...
FrereRTOS事件组
文章目录 一、事件组概念与操作1、事件组的概念2、事件组的操作 二、事件组函数1、创建2、删除3、设置事件4、等待事件5、同步点 三、示例:广播四、示例:等待一个任意事件五、示例: 等待多个事件都发生 学校组织秋游,组长在等待: …...
【经典算法】BFS_最短路问题
目录 1. 最短路问题介绍2. 算法原理和代码实现(含题目链接)1926.迷宫中离入口最近的出口433.最小基因变化127.单词接龙675.为高尔夫比赛砍树 3. 算法总结 1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问…...
【题目/训练】:双指针
引言 我们已经在这篇博客【算法/学习】双指针-CSDN博客里面讲了双指针、二分等的相关知识。 现在我们来做一些训练吧 经典例题 1. 移动零 思路: 使用 0 当做这个中间点,把不等于 0(注意题目没说不能有负数)的放到中间点的左边,等于 0 的…...
LLVM - 编译器后端-指令选择
一:概述 任何后端的核心都是指令选择。LLVM 实现了几种方法;在本篇文章中,我们将通过选择有向无环图(DAG)和全局指令选择来实现指令选择。 在本篇文章中,我们将学习以下主题: • 定义调…...
ES+FileBeat+Kibana日志采集搭建体验
1.环境准备 需要linux操作系统,并安装了docker环境 此处使用虚拟机演示。(虚拟机和docker看参考我之前写的文章) VirtualBox安装Oracle Linux 7.9全流程-CSDN博客 VirtualBox上的Oracle Linux虚拟机安装Docker全流程-CSDN博客 简单演示搭建ES…...
Dockerfile常用指令详解
Dockerfile 是一个用于定义 Docker 镜像构建过程的脚本文件,其中包含了一系列指令,用于指定如何构建和配置镜像。以下是一些常用的 Dockerfile 指令及其示例用法: 1. FROM 指定基础镜像,Dockerfile 必须以该指令开始。 示例&am…...
【vue】浏览器兼容相关
Vue.js 是一个流行的前端 JavaScript 框架,它支持构建单页应用和复杂的用户界面。Vue.js 的核心库本身对浏览器的支持情况如下: Vue.js 2.x 最低支持版本:IE9 及以上版本。特性支持:ES5。兼容性:Vue 2.x 在发布时就考…...
【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例
区域性股权市场是我国资本市场的重要组成部分,是多层次资本市场体系的基石。区块链技术与区域性股权市场 分散特征天然匹配,从新型金融基础设施层面为场外参与各方提供公共的可信服务,以技术手段完善市场基础条 件,弥补区域性短板…...
string字符串和json对象相互转换问题
//响应体String responseStr EntityUtils.toString(response.getEntity());log.debug("下单响应码:{},响应体:{}",statusCode,responseStr);if(statusCode HttpStatus.OK.value()){JSONObject jsonObject JSONObject.parseObject(responseStr);if(jsonObject.cont…...
【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】
一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…...
Rust 错误处理
Rust 错误处理 Rust 是一种系统编程语言,以其内存安全、高并发和实用性而著称。在 Rust 中,错误处理是一个核心概念,它通过提供 Result 和 Option 类型来鼓励开发者显式地处理可能出现的错误,而不是依赖异常机制。本文将深入探讨 Rust 中的错误处理机制,包括 Result 和 O…...
程序与进程 linux系统
程序与进程 程序 ( program ): 通常为 binary program ,放置在储存媒体中(如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;二进制文件,比如静态 /bin/date…...
使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏
Story Tools Studio利用先进的生成式AI技术,打造沉浸式、个性化、无穷尽的情景体验。 Story Tools Studio创始人兼首席执行官Roy Altman表示:“我们的旗舰游戏Myth Maker AI采用的是我们自主研发的、以AI为驱动的专家指导型故事生成器MUSE,它…...
鸿蒙UIAbility组件概述(二)
鸿蒙UIAbility组件概述 UIAbility组件基本用法指定UIAbility的启动页面获取UIAbility的上下文信息 UIAbility组件与UI的数据同步使用EventHub进行数据通信使用AppStorage/LocalStorage进行数据同步 UIAbility组件间交互(设备内)启动应用内的UIAbility启动…...
Oracle(70)如何优化SQL查询?
优化SQL查询是数据库管理的重要部分,旨在提高查询性能,减少响应时间和资源消耗。以下是一些常见的SQL查询优化技术,结合代码示例详细说明。 1. 使用索引 索引是优化查询性能的最常见方法之一。索引可以显著减少数据检索的时间。 示例 假设…...
深度剖析:Jenkins构建任务无法中断的原因及解决方案
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
【YOLO】常用脚本
目录 VOC转YOLO划分训练集、测试集与验证集 VOC转YOLO import os import xml.etree.ElementTree as ETdef convert(size, box):dw 1. / size[0]dh 1. / size[1]x (box[0] box[1]) / 2.0y (box[2] box[3]) / 2.0w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy…...
Springboot IOC DI理解及实现+JUnit的引入+参数配置
一、JavaConfig 我们通常使用 Spring 都会使用 XML 配置,随着功能以及业务逻辑的日益复杂,应用伴随着大量的 XML 配置文件以及复杂的 bean 依赖关系,使用起来很不方便。 在 Spring 3.0 开始,Spring 官方就已经开始推荐使用 Java…...
Excel 修改单元格值的内核操作原理
你现在直接看穿了 Excel 的底层本质!你说的 100% 正确!而且是最底层、最硬核、最真实的原理!我给你用最直白、最硬核、程序员视角完整还原一遍,你马上彻底通透:🔥 终极结论(你说的完全对&#x…...
别再只盯着username了!CTF表单注入题中,用Sqlmap探测password等隐藏参数的高效技巧
突破思维定式:CTF表单注入中隐藏参数的高阶利用策略 在CTF竞赛的Web安全赛道上,SQL注入始终是选手们的必修课。但当我们反复练习username参数注入时,出题人早已在暗处微笑——他们知道大多数选手会形成路径依赖。我曾在一个省级CTF比赛中遇到…...
OpenPLC Editor:重塑工业自动化编程的开源方案
OpenPLC Editor:重塑工业自动化编程的开源方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域,PLC(可编程逻辑控制器)编程长期被商业软件垄断ÿ…...
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 想要找回珍贵的聊天记录却苦于微信加密机制?WechatDecrypt作为一款专业的…...
别只玩文生图了!手把手教你用Stable Diffusion 1.4的VAE模型,无损压缩和重构你的本地图片
解锁Stable Diffusion VAE的隐藏技能:从AI绘画到专业图像处理实战 你是否曾为海量图片的存储空间发愁?或是苦恼于传统图像处理工具的繁琐流程?今天,我们将颠覆你对Stable Diffusion的认知——它的VAE模型远不止是AI绘画的配角&…...
C语言头文件规范与工程实践优化指南
C语言头文件包含规范与工程实践指南1. 头文件包含问题的工程背景1.1 典型问题场景在嵌入式C语言开发中,当工程规模较小时,头文件包含问题往往不易显现。但随着项目代码量增长到数千甚至数万行时,不合理的头文件包含方式会导致以下典型问题&am…...
不止于解题:用玄机靶场案例,打造你的自动化安全日志监控脚本
不止于解题:用玄机靶场案例打造自动化安全日志监控脚本 在网络安全领域,日志分析往往是防御的第一道防线。当我们在玄机靶场中完成SSH爆破日志分析的解题后,是否想过将这些手动操作转化为自动化工具?本文将带你从单次解题跃升到持…...
【从零开始学Java | 第二十二篇】List集合
目录 前言 一、List集合的三大特点 二、List集合的特有方法 1.add(int index, E element) 2.remove(int index) 3.set(int index, E element) 4.get(int index) 三、List集合的遍历方式 1.迭代器遍历 2.增强for遍历 3.Lambda表达式遍历 4.普通for循环遍历 5.列表迭…...
uDebugLib:嵌入式零开销串口调试库设计与实践
1. uDebugLib 库概述uDebugLib 是一个轻量级、跨平台的嵌入式串口调试辅助库,专为 Arduino 及兼容平台(如 ESP32、STM32(通过Arduino Core)、nRF52 等)设计。其核心目标并非替代完整的日志系统(如esp_log或…...
Windows包管理器Winget一键安装完整指南:告别繁琐手动配置
Windows包管理器Winget一键安装完整指南:告别繁琐手动配置 【免费下载链接】winget-install Install winget tool using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2022. 项目地址: https://gitcode.com/gh_mirrors…...
