redis cli笔记

2023-05-16

此篇为人个笔记,基本是个人常用命令,仅供参考。

基础操作

$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

为了方便代码复制,后面的代码中就不在包含redis 127.0.0.1:6379> 部分了。所有的操作都在这里进行。

命令查找

https://redis.io/commands/

查询所有的keys

https://redis.io/commands/keys/
返回所有匹配的键pattern。虽然此操作的时间复杂度为 O(N),但常数时间相当低。例如,在入门级笔记本电脑上运行的 Redis 可以在 40 毫秒内扫描 100 万个密钥数据库。

  • h?llo matches hello, hallo and hxllo
  • h*llo matches hllo and heeeello
  • h[ae]llo matches hello and hallo, but not hillo
  • h[^e]llo matches hallo, hbllo, … but not hello
  • h[a-b]llo matches hallo and hbllo
redis:6379> MSET firstname Jack lastname Stuntman age 35
"OK"
redis:6379> KEYS *name*
1) "lastname"
2) "firstname"
redis:6379> KEYS a??
1) "age"
redis:6379> KEYS *
1) "lastname"
2) "firstname"
3) "age"
redis:6379> 

SET设置key值

设置key为保存字符串value。如果key已经保存了一个值,则无论其类型如何,都会将其覆盖。任何先前与该键关联的生存时间在成功SET操作时都将被丢弃。
https://redis.io/commands/set/

选项

该SET命令支持一组修改其行为的选项:

  • EX seconds – 设置指定的过期时间,以秒为单位。
  • PX 毫秒——设置指定的过期时间,以毫秒为单位。
  • EXAT timestamp-seconds – 设置密钥过期的指定 Unix 时间,以秒为单位。
  • PXAT timestamp-milliseconds – 设置密钥过期的指定 Unix 时间,以毫秒为单位。
  • NX-- 仅当密钥不存在时才设置它。
  • XX-- 仅当密钥已存在时才设置它。
  • KEEPTTL-- 保留与密钥关联的生存时间。
  • GET-- 返回存储在 key 中的旧字符串,如果 key 不存在,则返回 nil。SET如果存储在 key 的值不是字符串,则返回并中止错误。
    注意:由于SET命令选项可以替换SETNX, SETEX, PSETEX, GETSET,因此在未来的 Redis 版本中,这些命令可能会被弃用并最终被删除。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> GET mykey
"Hello"
redis:6379> SET anotherkey "一分钟以后过期" EX 60
"OK"
redis:6379> 
Powered by

GET

获取 的值key。如果键不存在,nil则返回特殊值。如果存储的值key不是字符串,则返回错误,因为GET 只处理字符串值。

示例

redis:6379> GET nonexisting
(nil)
redis:6379> SET mykey "Hello"
"OK"
redis:6379> GET mykey
"Hello"
redis:6379> 

EXPIRE设置key过期时间

设置超时key。超时后,密钥将被自动删除。在 Redis 术语中,具有关联超时的键通常被称为volatile 。
https://redis.io/commands/expire/

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> SET mykey "Hello World"
"OK"
redis:6379> TTL mykey
(integer) -1
redis:6379> EXPIRE mykey 10 XX
(integer) 0
redis:6379> TTL mykey
(integer) -1
redis:6379> EXPIRE mykey 10 NX
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> 

TTL查询key过期时间

https://redis.io/commands/ttl/
返回具有超时的键的剩余生存时间。这种自省功能允许 Redis 客户端检查给定键将继续成为数据集的一部分的秒数。

在 Redis 2.6 或更早版本中,-1如果密钥不存在或密钥存在但没有关联的过期时间,则该命令返回。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> 

查询数据库列表

没有命令可以执行此操作(例如,您将使用 MySQL 执行此操作)。Redis 数据库的数量是固定的,并在配置文件中设置。默认情况下,您有 16 个数据库。每个数据库都由一个数字(不是名称)标识。

您可以使用以下命令来了解数据库的数量:

config get databases

https://stackoverflow.com/questions/12802726/how-to-list-all-redis-databases

查询每个数据库的使用情况:

INFO keyspace
# Keyspace
db0:keys=27,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0

PERSIST key 让key永不过期

https://redis.io/commands/persist/
删除现有的 timeout on key,将密钥从volatile(设置了过期时间的密钥)变为持久性(由于没有关联超时而永不过期的密钥)。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> PERSIST mykey
(integer) 1
redis:6379> TTL mykey
(integer) -1
redis:6379> 

FLUSHDB 删除所有key

删除当前选定数据库的所有键。这个命令永远不会失败。

默认情况下,FLUSHDB将同步刷新数据库中的所有键。从 Redis 6.2 开始,将lazyfree-lazy-user-flush配置指令设置为“yes”会将默认刷新模式更改为异步。

https://redis.io/commands/flushdb/

工作场景

若依开发token不过期设置

在java开发过程中token一过期就要重新登录,非常的麻烦。那么可不可以让我们开发用的token不过期呢?这样调试时就不需要频繁的重新登录了。
使用一行命令即可:

PERSIST "login_tokens:706f4afe-4588-4830-9b79-188544387acc"

实操如下:

127.0.0.1:6379> keys *login*
1) "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
127.0.0.1:6379> PERSIST "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
(integer) 1
127.0.0.1:6379> ttl "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
(integer) -1
127.0.0.1:6379> 

参考

https://redis.io/docs/manual/cli/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis cli笔记 的相关文章

  • Redis部署配置-主从复制

    目前我有两台服务器 我已经部署了基于node js Express JS的Web服务API 我正在使用 Redis 来缓存 JSON 字符串 将此设置部署到生产中的最佳选择是什么 我懂了here https stackoverflow co
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • socket.io redis 和内存泄漏

    我的socket io版本是 电子邮件受保护 cdn cgi l email protection and 电子邮件受保护 cdn cgi l email protection 我在 Windows 上 在某些地方 我看到问题已得到解决 我
  • Spring RedisTemplate:8次调用后方法键挂起

    我使用 Spring RedisTemplate spring data redis 1 7 1 与 Redis 进行通信 我需要通过正则表达式获取然后删除键 例如 context user1 我用的方法 RedisTemplate key
  • connect-redis - 如何保护会话对象免受竞争条件影响

    我使用 nodejs 和 connect redis 来存储会话数据 我将用户数据保存在会话中 并在会话生命周期中使用它 我注意到两个更改会话数据的请求之间可能存在竞争条件 我尝试过使用 redis lock 来锁定会话 但这对我来说有点问
  • Stackexchange.redis 缺乏“WAIT”支持

    我在客户端应用程序正在使用的负载均衡器后面有 3 个 Web API 服务器 我正在使用这个库来访问具有一个主服务器和几个从服务器的 Redis 集群 目前不支持 WAIT 操作 我需要此功能来存储新创建的用户会话并等待它复制到所有从属服务
  • PooledRedisClientManager 未释放连接

    我将 json 数据列表存储在 redis 中并使用 ServiceStack c 客户端访问它 我本质上是在管理自己的外键 我在其中存储zrangeid 我使用应用程序内部的接口从zrange然后从 Redis 获取底层 json 对象并
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • 为什么Redis中不建议使用KEYS?

    在Redis中 建议不要使用按键命令 https redis io commands KEYS 为什么会这样呢 是因为它的时间复杂度是 O N 吗 或者是别的什么原因 我做了下面的实验来证明KEYS命令有多么危险 当带有 KEYS 的一个命
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • Redis、会话过期和反向查找

    我目前正在构建一个网络应用程序 并想使用 Redis 来存储会话 登录时 会话会使用相应的用户 ID 插入到 Redis 中 并且过期时间设置为 15 分钟 我现在想实现会话的反向查找 获取具有特定用户 ID 的会话 这里的问题是 由于我无
  • 有没有办法用Lettuce自动发现Redis集群中新的集群节点IP

    我有一个Redis集群 3主3从 运行在一个库伯内斯簇 该集群通过Kubernetes 服务 Kube 服务 我将我的应用程序服务器连接到 Redis 集群 使用Kube 服务作为 URI 通过 Redis 的 Lettuce java 客
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc

随机推荐

  • linux keynav 鼠标可以扔掉了键盘控制鼠标

    我是一个vim用户 xff0c 喜欢使用键盘操作大部分的事情 无奈现在很多软件从设计之初就是为了鼠标设计的 就导致有些时候不得不使用鼠标 那么退一步讲 xff0c 能否使用键盘临时控制一下鼠标呢 xff1f 这样就可以进一步减少鼠标的使用了
  • mysql数据库的导出与导入

    在开发工作中和运维工作中 xff0c 数据库的备份与还原是很常见的工作 之前的工作中我使用oracle更多 xff0c mysql的备份工作参与的比较少 记录一下 xff0c 加深一下印象 准备工作 安装mysql客户端 xff0c 我喜欢
  • linux Windows双系统时间不一致的解决办法

    原因 电脑系统中有两个时间 xff1a 硬件时间 xff1a 保存在主板中 xff0c 信息比较少没时区 夏令时的概念 系统时间 xff1a 又系统维护 xff0c 独立于硬件时间 xff0c 拥有时区 夏令时等信息 系统时间又因为系统的不
  • 设计原则之【迪米特法则】,非礼勿近

    文章目录 一 什么是迪米特法则1 理解迪米特法则2 如何理解 高内聚 松耦合 xff1f 二 实例1 实例12 实例2 一 什么是迪米特法则 迪米特原则 xff08 Law of Demeter LoD xff09 是指一个对象应该对其他对
  • archlinux telnet客户端

    简单介绍 telnet是一种基于TCP的传统命令行远程控制协议 telnet使用非加密的通道 xff0c 因此不太安全 现在主要用于链接一些旧设备 下面这些介绍主要适用于在Arch Linux系统中配置一个telnet服务器 安装 如果只使
  • ASUS Vivobook安装linux

    使用ASUS Vivobook安装linux 会有一个小坑 如果你的linux启动不起来 xff0c 或者本来可以启动更新固件以后就不行了 这篇文章可能会给你一点帮助 BIOS设置 如果你想在这台电脑上安装linux 则Secure Boo
  • 修复grub启动 因调整分区导致linux无法启动解决过程

    linux调整分区后 xff0c 开机重启时会出现 error unknow filesystem grub rescue gt 我是windows11 43 archlinux双系统使用 这段时间用下来 xff0c 感觉使用linux更多
  • linux 扩容 新增分区

    一开始我只是尝试使用archlinux做为主要办公系统 xff0c 给系统分配的空间并不多 渐渐的也适应了archlinux感觉挺好 于是就把windows中占用的一些空间分配给archlinux用了 记录一下些过程吧 我把windows的
  • VirtualBox调整分分辨率

    以前在windows或者macOS基本都是使用vmware来玩虚拟机的 到linux环境 xff0c 想体验一下VirtualBox 结果用的时间发现分辨率都是调不出来 记录一下我的操作方法 环境 宿主机 xff1a archlinux 4
  • VirtualBox宿主机复制粘贴时有时无

    现象 首先我已经安装了增强功能 xff0c 共享剪切板选择的也是双向 虚拟机刚开机剪切板功能是正常的 可以双向复制 但是用了一段时间以后 xff0c 就会发现从宿主机得到到虚拟机就不行了 但是可以从虚拟机复制到宿主机 环境 我的宿主机是 a
  • HBuilderX运行微信小程序不报错也打不开

    我主用的是linux操作系统 xff0c 因为要开发微信小程序 所以在虚拟机中安装了一个windows7系统 环境 虚拟机中的windows7 HbuilderX 43 微信开发者工具 现象 使用HbuilderX开发uni app并想在微
  • Virtualbox虚拟机与主机相互访问

    刚从vmware切换到Virtualbox有些地方还是不太熟悉 网络连接这块就被卡了一下 xff0c 后来发现其实很简单 xff0c 是我想多了 环境 主机 xff1a archlinux 虚拟机 xff1a windows 10 软件版本
  • maven打包报内存不足,配置maven vm options

    服务器上内存所剩余不多了 xff0c 用mvn打包报内存不足 解决办法就要把vm options中内存设置小一些 mvn jvm config文件 xff1a 从 Maven 3 3 1 43 开始 xff0c 您可以通过 maven pr
  • archlinux滚动更新导致virtualbox虚拟机无法启动

    今天遇到一个奇怪的问题 xff0c 滚动更新以后 xff0c pacman Syyu 虚拟机无法正常启动了 虚拟机启动以后一直显示Starting virtual machine 并且卡在20 不动了 原因分析 我怀疑是更新系统后 xff0
  • 设计模式之【工厂模式】,创建对象原来有这么多玩法

    文章目录 一 什么是工厂模式1 工厂模式的意义2 什么时候应该用工厂模式 二 简单工厂模式1 实例 xff08 1 xff09 使用简单工厂进行优化 xff08 2 xff09 静态工厂 xff08 3 xff09 使用map来去除if x
  • archlinux安装node.js长期支持版本

    默认archlinux安装的node js版本是18 我今天在遇到项目时报错了 xff0c 项目中用到一个组件不支持18 那么如果安装 低版本的Node呢 xff1f 先在软件仓库中搜索一下 xff1a pacman Ss span cla
  • windows开机启动目录

    设置windows开机启动有很多种方法 xff0c 最简单的方法恐怕就是把快捷方式放到启动目录吧 windows开机启动目录 按下 win 43 R 打开运行输入 xff1a shell span class token operator
  • linux 灰度显示grayscale

    之前我在使用macOS的时候 xff0c 非常喜欢使用灰度显示界面 到底是什么原因让我有这么 变态 的需求 下面听听我的故事 xff0c 当时不重要 xff0c 可以跳过 是这样的 xff0c 因为我是程序员 xff0c 算上电脑 43 手
  • charles iOS手机抓包

    iOS手机如何抓包 下载charles https www charlesproxy com latest release download do 注册码 Registered Name span class token builtin c
  • redis cli笔记

    此篇为人个笔记 xff0c 基本是个人常用命令 xff0c 仅供参考 基础操作 redis cli redis span class token number 127 0 span 0 1 637 span class token oper