Redis全局命令

redis有5种数据结构,他们是键值对中的值,对于键来说有一些通用的命令。

查看所有键

语法:keys *
[root@vultr ~]# redis-cli 
127.0.0.1:6379> keys * 
 1) "d"
 2) "nihao"
 3) "c"
 4) "hello"
 5) "redis"
 6) "lianst"
 7) "mylist"
 8) "b"
 9) "a"
10) "lian"

查看键总数

语法:dbsize
[root@vultr ~]# redis-cli 
127.0.0.1:6379> keys * 
 1) "d"
 2) "nihao"
 3) "c"
 4) "hello"
 5) "redis"
 6) "lianst"
 7) "mylist"
 8) "b"
 9) "a"
10) "lian"
127.0.0.1:6379> dbsize
(integer) 10

dbsize命令在计算键总数的时候不会遍历所有键,而是直接获取redis内置的键总数变量,所以dbsize命令的时间复杂度是0(1)(时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数)。而keys命令会遍历所有键,所以他的时间复杂度是O(n),当redis保存大量键时,线上环境禁止使用。

检查键是否存在

检查键是否存在使用exists key查看,如果键存在则返回1,不存在就返回0。

语法:exists key
127.0.0.1:6379> keys *
 1) "d"
 2) "nihao"
 3) "c"
 4) "hello"
 5) "redis"
 6) "lianst"
 7) "mylist"
 8) "b"
 9) "a"
10) "lian"
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists linux
(integer) 0

删除键

del是一个通用命令,无论值是什么数据结构类型,del命令都可以将其删除,如下所示:

语法:del key | del key1 key2 key3 ...
127.0.0.1:6379> keys *
1) "nihao"
2) "c"
3) "hello"
4) "redis"
5) "lianst"
6) "mylist"
7) "b"
8) "a"
9) "lian"
127.0.0.1:6379> del nihao 
(integer) 1
127.0.0.1:6379> exists nihao
(integer) 0
127.0.0.1:6379> del mylist 
(integer) 1
127.0.0.1:6379> exists mylist
(integer) 0

返回的结果是成功删除键的个数,架设删除一个不存在的键,就会返回0。

127.0.0.1:6379> del vultr
(integer) 0

同时,del命令可以支持删除多个键:

127.0.0.1:6379> keys *
1) "c"
2) "hello"
3) "redis"
4) "lianst"
5) "b"
6) "a"
7) "lian"
127.0.0.1:6379> del c hello a b 
(integer) 4
127.0.0.1:6379> keys *
1) "redis"
2) "lianst"
3) "lian"

键过期

语法:expires key seconds

redis支持对键添加过期时间,当超过过期时间后,会自动删除键,例如为键hello设置10秒过期的时间:

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 10
(integer) 1

ttl命令会返回键的剩余过期时间,他有3中返回值:

  • 大于等于0的证书:键剩余的过期时间
  • -1:键没有设置过期的时间
  • -2:键不存在

可以通过ttl命令来观察键hello的剩余过期时间:

127.0.0.1:6379> ttl hello
(integer) 4  # 还剩4秒
127.0.0.1:6379> ttl hello
(integer) 3  # 还剩3秒
127.0.0.1:6379> ttl hello
(integer) -2  # 返回结果为-2,说明键hello已经被删除了

查看键的数据结构类型

语法:type key

例如键hello是字符串类型,返回结果为string。键mylist是列表类型,返回结果是list。

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> type hello
string
 
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379> type mylist
list

如果键不存在,则返回none。

127.0.0.1:6379> type lian
none

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis AOF保存机制

    网上说AOF有三种保存方式,不自动保存、每秒自动保存、每命令自动保存。 其中每秒自动保存这个看起来很美好,但是可能会被各种IO的时间所延迟,所以究竟是怎么判断每...

    老白
  • 【Go 语言社区】删除redis所有KEY

    批量删除Key Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这...

    李海彬
  • 【Go 语言 redis内存数据库存储 demo】

    package main import ( "fmt" "github.com.Go-Redis/github.com/alph...

    李海彬
  • redis 的安装和部署

    安装 1.首先下载Redis压缩包 wget : http://download.redis.io/releases/redis-3.2.6.tar.gz 2...

    奋斗蒙
  • 【Go 语言社区】研究Redis 作为服务器缓存配置的可行性(一)

    最近在研究Redis 作为服务器缓存配置的可行性问题,今天我们测试高并发下的写入数据。 不管对于单服还是集群服务器组,同样涉及到数据...

    李海彬
  • 【Go 语言社区】关于Golang 数据缓存到redis内存数据库遇到的问题

    首先, 简单的说下,redis 在项目中的一个作用;针对与大数据在内存操作数据和子数据库操作数据可能都不是一个数量级的,redis在项目中主要是起到...

    李海彬
  • 开源 | 携程Redis多数据中心解决方案-XPipe

    作者简介 孟文超,携程技术中心框架研发部高级经理。2016年加入携程,目前主要负责Redis多数据中心项目XPipe。此前曾在大众点评工作,任基础架构部门通信团...

    用户1292807
  • 【Go 语言社区】Golang语言操作redis连接池的方法

    func newPool(server, password string) *redis.Pool { return &redis.Pool{ ...

    李海彬
  • golang基于redis lua封装的优先级去重队列

    前言: 前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的重复任务。这时候我们要临时解决两个...

    李海彬
  • 【Go 语言社区】linux下redis设置密码登录

    redis 设置密码访问 你的redis在真实环境中不可以谁想访问就访问,所以,必须要设置密码。 设置密码的步骤如下: vi redis.conf ...

    李海彬

扫码关注云+社区

领取腾讯云代金券