redis——基本命令

news/2024/9/23 8:38:22/

什么是Reids(REmote Dictionary Server)

  • Redis是现在主流的数据库之一,是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。

特性

1.速度快

  • :Redis的数据全部存储瑜内存中。 可以通过下面的表来对比一下
  • Redis的核心功能都是比较简单的逻辑,核心功能都是比较简单的数据结构来实现的
  • 从网络角度上来看,Redis使用了“IO多路复用的方式”
  • Redis使用的是单线程模型,减少了锁之间的冲突
    在这里插入图片描述

基于键值对的数据结构

几乎所有的编程语言都提供了类似字典的功能,例如C++中的map,java中的map等,类似于这种键值对的方式,与很多键值对不同的是,Redis中的值不仅可以是字符串,还可以是具体的数据结构,这样不仅能便于在许多应⽤场景的开发,同时也能提⾼开发效率。

3.丰富的功能

  • 提供了键过期功能,可以用来实现缓存
  • 提供了发布订阅的功能,可以用来实现消息系统
  • 支持Lua脚本功能,可以利用脚本创造出Redis命令
  • 提供了简单的事务功能,能在一定程度上保证事务特性
  • 提供了流水线功能,这样客户端 能将一批命令一次上传到Redis中,减少了网络的开销

4.持久化

通常看,将数据放在内存中是不安全的,⼀旦发⽣断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化⽅式:RDB和AOF,即可以⽤两种策略将内存的数据保存到硬盘中,这样可以保证数据的可持久性。

当然Redis还有很多的特性,可以去官网上看看。

在这里插入图片描述

基本全局命令

set

  • 将key和value存储进去

注意一点就是key都是string,但是value可以是多种类型

get

  • 根据key获取对应的value
  • 如果当前的key不存在,就返回nil
    在这里插入图片描述

keys

  • 返回所有满足样式的key。支持通配符匹配
  • 时间复杂度:O(N)

通配符匹配规则:

  • ?:匹配一个字符
  • *:匹配0个或者多个字符
  • [a,b]:匹配a到b的字符
  • [^e]:匹配除了e的字符

下面是例子

  • h?llo 匹配 hello , hallo和 hxllo
  • h*llo 匹配 hllo和 heeeello
  • h[ae]llo匹配 hello和 hallo但不匹配 hillo

注意的是keys的时间复杂度是O(N)
所以在生产环境中,禁止使用keys * 来查询所有的key。

  • 因为redis是一个单线程的服务器,执行keys*的时间非常长,就使redis阻塞住了,无法给其他客户端提供服务了。
  • redis经常被用来做缓存,挡在数据库的前面,如果redis因为keys*阻塞住了,那么当一大批请求过来的时候,mysql就很容易挂掉。

exists

使用方法: EXISTS key [key …]

  • 判断某个key是否存在
  • 时间复杂度:O(1)
  • 返回值:key存在的个数

在这里插入图片描述

DEL

删除指定的key
使用方法:DEL key [key …]

  • 时间复杂度:O(1)
  • 返回值:删除掉key的个数

EXPIRE

为指定的key添加秒级的过期时间
使用方法: EXPIRE key seconds

  • 时间复杂度:O(1)
  • 返回值:1表示成功,0表示设置失败

在这里插入图片描述

TTL

获取指定key的过期时间,秒级
使用方法:TTL key

  • 时间复杂度:O(1)
  • 返回值:剩余过期时间。-1表示没有关联的过期时间,-2表示key不存在

在这里插入图片描述
图解过期机制:
在这里插入图片描述

type

返回key对应的数据类型
使用方法:TYPE key

  • 时间复杂度:O(1)
  • 返回值:none,string,list,set,zset,hash和stream

在这里插入图片描述

redis_129">redis中的过期策略

rediskey_rediskeykeyrediskey_131">redis的key过期策略如何实现的? 一个redis中可能同时存在很多key,这些key中可能有一大部分都有过期时间,此时,redis服务器怎么知道key已经过期了呢??

redis整体的策略

  • 定期删除:
  • 惰性删除

定期删除
结合定期删除操作。

惰性删除
假设这个key已经到了过期时间,但是暂时不用删除它,key还存在,当下一次访问的时候,用到这个key的时候,会让redis触发删除机制,同时分会一个nil

关于定时删除的功能,其实redis中没有采用定时器的方式来实现定期删除key。
如果有多个key过期了,可以采用通过一个定时器的来高效/节省CPU的前提下处理多个key(即优先级队列 或者基于时间轮都可以实现高效的定时器)


http://www.ppmy.cn/news/1512449.html

相关文章

[Day 58] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

深度學習中的自然語言生成技術 引言 自然語言生成(Natural Language Generation, NLG)是人工智能和自然語言處理領域中一個激動人心的研究方向。隨著深度學習技術的快速發展,NLG已經取得了巨大的進步。本文將詳細介紹深度學習在自然語言生成中的應用,包括主要的模型架構、訓練…

高温烟气湿度仪中的测量高温烟气湿度的传感器推荐

随着技术的发展与进步,以及国家对环境保护越来重视,污染物排放控制成为重点任务。测量固定污染源排放气体中的烟气湿度主要是为了确定干基氧气的含量,从而计算烟尘和气态污染物的实际浓度。由于湿烟气的温度较高且含尘量较大,而且…

MySQL面试相关精选

一、数据库三大范式 第一范式:1NF 原子性 列或者字段不能再分,要求属性具有原子性,不可再分解;单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。第二范式:2NF 唯一性 一张表只说一件事…

学习大数据DAY40 基于 hive 的数据处理

目录 Hive 复合数据定义方法 Hive 复合数据查询方法 hive 内置函数 上机练习 Hive 复合数据定义方法 Hive 复合数据查询方法 hive 内置函数 -- 查看系统自带的函数 show functions; -- 显示自带的函数的用法 desc function upper; -- 详细显示自带的函数的用法 desc …

ChatGPT 3.5/4.0新手使用手册~ (论文润色、降重指令) 亲测~

今天给大家分享下论文润色、降重、写作的GPT指令提示词,按论文步骤整理 让你的文章更加有逻辑且通顺,助力快速完成论文,相信对你有帮助~ 一、论文写作润色指令 1、写作选题指令 ① 确定研究对象 我是一名【XXXXX】,请从以下素…

聊聊从需求到性能测试全过程

目录 指南 第一步:需求分析 第二步:搭建测试环境 第三步:录制事物脚本 第四步:创建性能测试场景 第五步:执行性能测试 第六步:分析测试结果、撰写测试报告和环境恢复 指南 在性能测试项目中将大部分…

基于vue框架的搬家网平台iz216(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,服务项目,订单信息,工人,商家,项目类型,指派信息,进度情况,服务评价 开题报告内容 基于Vue框架的搬家网平台开题报告 一、引言 随着城市化进程的加快和人们生活水平的提高,搬家服务需求日益增长。传统的搬家服务往往…

GS NVMe全闪存储 应用于大型EDA芯片生产企业  性能如何?

大型EDA芯片生产企业,前端通常有几百台编译服务器运行。EDA软件运行时会产生数十万的小文件和GB级大文件,而且对于元数据的I/O能力要求特别高,因此非常考验存储NAS的并行I/O能力。GS 5000U搭载第五代Intel Xeon 处理器,使得单台NA…