首页 > 数据库 >redis常用命令

redis常用命令

时间:2024-09-26 14:52:28浏览次数:3  
标签:定时器 过期 redis keys 时间 key 常用命令

目录

Redsi最核心的命令(set和get)

redis不区分大小写

1.set

在这里插入图片描述

  set

存储一个键值对
在这里插入图片描述
这里的K-V不需要加引号,就是表示字符串的类型(加上引号也可以)

2.get

  get [key]

通过key,获取value
如果不存在,显示(nil)

在这里插入图片描述

redis是键值对结构,key固定是字符串,但是value有多种类型:

字符串,哈希表,列表,集合,有序集合
操作不同的数据结构,就会有不同的命令

全局命令(通用命令)

1. keys (按照匹配规则查看key)

keys pattern

pattern: 包含特殊符号的字符串

用来筛选字符串的

  • ? 匹配任意一个字符      * 匹配0个或多个任意字符  
    
  • [abcd] 只能匹配到abcd别的不行
    
  • [^e] 排除e,只有e匹配不了,其他都可以匹配
    
  • [a-b] 包含a,b两个边界,匹配a-b范围内的字符串
    

在这里插入图片描述

在这里插入图片描述

注意事项:
keys的时间复杂度是0(N),在生产环境上,一般都会禁止使用 keys 命令,尤其是 keys *
生产环境上的key可能会非常多,而redis是一个单线程的服务器,执行 keys * 的时间非常长,就使redis 服务器被堵塞了,无法给其他客户端提供服务
这样的后果,可能是灾难性的!!!

2.exists(用来判断指定key是否存在)

  exists key[key ...]
  1. 判断key是否存在 返回值:key存在的个数
  2. 时间复杂度:O(N) 检查几个key,就是几

在这里插入图片描述

3.del(删除指定的key)

	del key [key ...]

在这里插入图片描述

4.expire(给key设置过期时间)

expire的作用是给key设置时间(很多业务场景,是有时间限制的,比如说验证码和点外卖时优惠卷失效,超过时间自动失效)

基于redis实现分布式锁,为了避免不能正常解锁的情况,通常都会在加锁的时候设置一下过期时间(所谓的使用redis作为分布式锁,就是给redis里写一个特殊的 key value)

   expire key second

在这里插入图片描述

	pexire key 毫秒

5.ttl(查看key的过期时间)

time ti live
IP协议报头有一个终端 TTL,用次数衡量过期的
这里的TTL查看key的过期时间还有多少

	ttl key

在这里插入图片描述

reidis的key的过期策略怎么实现的?

如果直接遍历所以的key,效率低,占用CPU高

  1. 定期删除: 超市老板每各一次检查商品有没有过期,但是效率很低,太多商品了,使用随机抽取一部分,进行验证过期时间,保证这个抽取检查的过程足够快(redis是一个单线程的程序,主要任务是处理命令,如果扫描过期key消耗的时间太多了,就可能导致正常处理请求命令就被堵塞了,产生了类似于 keys * 这样的效果)
    错误的说法:
    定时删除:
    含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除
    优点:保证内存被尽快释放
    缺点:如果过期的key很多,删除这些key 会占用很多的CPU时间,在CPU不能把所有的时间来做要紧的事,还有花时间去删除这些key;定时器的创建耗时,如果为每一个设置过期时间的key创建一个定时器,将会有大量的定时器产生,性能影响严重;使用没人用
    1.redis中并没有采取定时器的方式来实现过期key删除
    2.如果有对个key过期,也可以通过一个定时器在高效/节省CPU的前提下处理多个key (基于优先级队列或者基于时间轮实现比较高效的定时器)
  2. 惰性删除:假设key已经到过期时间了,但是暂时还没删它,key还存在,但是后面一次的访问这个key,于是访问redis服务器触发删除key的操作,同时在返回一个 nli
    (买出这个商品的时候做出检查,顾客买商品在准备付钱是发现过期,商店撤回了一次卖出)
    上述两种策略结合,整体的效果一般,仍然可能还有很多过期的key被残留了
    redis为了对上述进行补充,还提供了一系列的·内存淘汰策略。
定时器的比较高效的实现方式


1.基于优先级队列/堆 : 在redis的场景中,就可以通过“过期的时间越早,就是优先级越高”

key1:12:00
key2:13:00
key3:14:00

此时定时器只要分配一个线程,让这个线程去检查队首元素,看是否过期即可!
此时扫描线程不需要遍历全部全部key
根据当前时刻和队首元素的过期时间,设置一个等待 :当时间差不多到了,系统在唤醒(在新任务添加的时候,主动唤醒,根据时间程序调整)这个线程,此时扫描线程不需要高频扫描队首元素

2.基于时间轮实现定时器:
把时间划分为很多小段(划分力度看需求)

6.type(查询key对应的value类型)

redis所有的key都是string类型,key对应的value可能会存在多种类型

   type key

在这里插入图片描述

redis的所有指令在官网都可以查到其对应的文档,文档中对各个指令的用法,注意事项有明确的定义
官网redis
在这里插入图片描述

标签:定时器,过期,redis,keys,时间,key,常用命令
From: https://blog.csdn.net/m0_74312445/article/details/142495848

相关文章

  • (Centos7/麒麟V10)服务器 Redis安装指南
    1.下载或上传安装包安装包官方下载地址:https://download.redis.io/releases/2.准备GCC编译环境查看gcc编译器版本:gcc-v若不存在则执行:yuminstall-ygcc或参考服务器gcc离线安装指南3.解压安装包并移至目标目录本文以redis-7.0.8.tar.gz安装包,部署路径/home/redis为......
  • [Redis]Redisson
    waitTime等待时间。客户端尝试获取锁时最大等待时间,超过这个等待时间必然返回获取锁失败。leaseTime锁的租期。客户端可持有锁的时间,超过这个时间锁自动过期。竞争锁的客户端执行Lua脚本获取锁,如果获取失败,则订阅解锁消息,并挂起线程。持有锁的客户端执行Lua脚本解锁,删除锁......
  • 【Linux篇】常用命令及操作技巧(进阶篇 - 上)
    ......
  • Ubuntu 安装Mysql+Redis+Nginx
    一、安装MySql1.新系统需要安装一下更新aptupdate-yaptdist-upgrade-yaptinstall-ywget2.安装mysql,并修改配置aptinstall-ymysql-servermysql配置文件通常位于vi/etc/mysql/mysql.conf.d/mysqld.cnf在[mysqld]把bind改成0.0.0.0,增加连接数,修改mode,开......
  • Redis过期时间删除策略详解
    文章目录Redis过期时间删除策略详解一、引言二、Redis过期键删除策略1、定时删除2、惰性删除3、定期删除三、Redis实际采用的策略1、惰性删除Java伪代码2、定期删除Java伪代码四、总结Redis过期时间删除策略详解一、引言在许多应用程序中,我们经常需要缓存一......
  • [redis命令]set&zset命令汇总
    set命令命令含义SADD向集合添加一个或多个成员SCARD获取集合的成员数SDIFF返回给定所有集合的差集SDIFFSTORE返回给定所有集合的差集并存储在destination中SINTER返回给定所有集合的交集SINTERSTORE返回给定所有集合的交集并存储在destination中SISMEMBER判断member......
  • Spring Boot 三层架构结合 Redis 和 ELK 实现高效应用开发
    目录一、技术选型二、项目结构三、SpringBoot三层架构实现四、配置Redis五、配置ELK六、代码解析在企业级应用开发中,良好的架构设计和强大的技术栈能够提高开发效率、增强系统性能和可维护性。本文将介绍如何使用SpringBoot构建三层架构,并结合Redis和ELK(Ela......
  • Redisson与分布式锁
    一.Redis的常用客户端:Jedis:和命令最相似,API全面。缺点:多线程不安全(多线程可以使用连接池,安全使用Jedis)SpringData:线程安全的,底层基于Netty(异步的支持)Redisson:线程安全的,底层基于Netty,提供很多的分布式服务(分布式锁,分布式集合,分布式下的JUC的封装,延时队列)二.Redis实现......
  • Redis6 多线程模型
    优质博文:IT-BLOG-CN一、单线程的优缺点对于一个请求操作Redis主要做3件事情:从客户端读取数据/解析、执行Redis命令、回写数据给客户端。所以主线程其实就是把所有操作的这3件事情串行一起执行,因为是基于内存,所以执行速度非常快。优点&缺点:【1】优点:不存在锁的竞争问题和......
  • Redis学习
    系列文章目录第一章基础知识、数据类型学习第二章万年历项目第三章代码逻辑训练习题第四章方法、数组学习第五章图书管理系统项目第六章面向对象编程:封装、继承、多态学习第七章封装继承多态习题第八章常用类、包装类、异常处理机制学习第九章集合学习第......