当前位置: 首页 > news >正文

零基础学习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 

expire key seconds 

给指定的key设置过期时间,单位为秒,从设置起,如果key存活超过过期时间,key就会被删除,设置成功返回1 失败返回0, 可以通过 tll key 查看对应的key还有多久过期,如果key不存在或已经过期,返回-2:

对计算机来说,秒是一个比较长的时间单位,于是redis还提供了一个pexpire用于设置毫秒级的过期时间:

pexpire key milliseconds 

redis 的过期策略是如何实现的?(面试题)

  1. 定期删除:定期抽取一部分数据检查是否到达过期时间(因为redis是单线程,如果数据量大抽取全部数据会导致阻塞)
  2. 惰性删除:由于定期删除每次只检查一部分数据,很有可能某个数据到达过期时间了还没有被删除,当这个数据被访问到时,redis就会立刻删除这个key。

虽然有了上面两种策略,但整体的删除效果还是一般,于是redis还提供了一系列的内存淘汰策略(这里不展开叙述感兴趣可以自行了解) 。

注意:redis并没有采用定时器的方式来实现过期策略

6. type

type key

返回key对应的value的数据类型


http://www.mrgr.cn/news/6180.html

相关文章:

  • 【达梦数据库】锁超时的处理方法-错误码[-6407]
  • EmguCV学习笔记 VB.Net 第5章 图像变换
  • 通过Qt Creator Plugin开发Qt Creator插件-【金丹篇】
  • 设计模式 -- 概述
  • FPGA开发——DS18B20的使用(理论)
  • Mybatis(面试篇)
  • 软件测试最全面试题及答案整理(2024最新版)
  • 深入了解SOCKS v5协议:代理通信的安全通道
  • 协作新选择:即时白板在线白板软件分享
  • 工业4G路由器
  • K8s CPU Throttle 优化方案
  • MySQL入门学习-命令行工具.mysqlbinlog
  • javascript如何创建函数
  • mac安装xmind
  • linux 网卡配置
  • SQL,连结多行的字串并去除重复
  • 【十四届蓝桥杯省赛C++试卷】
  • 机械键盘里都有哪些轴?各个轴体都有哪些特性?
  • 初识顺序表---C语言
  • leetcode_59. 螺旋矩阵 II