1.3、Redis全局命令(入门)

Redis全局命令

对于键值数据库而言,基本的数据模型是 key-value 模型,Redis 支持的 value 类型包括了 String、哈希表、列表、集合等,而Memcached支持的 value 类型仅为 String 类型,所以Redis 能够在实际业务场景中得到广泛的应用,就是得益于支持多样化类型的 value。

Redis里面有16个库,但是Redis的分库功能没啥意义(默认就是0号库,尤其是集群操作的时候),我们一般都是默认使用0号库进行操作。

在了解Rediskey-value 模型之前,Redis的有一些全局命令,需要我们提前了解。

keys命令

keys *
keys L*

查看所有键(支持通配符):

但是这个命令请慎用,因为keys命令要把所有的key-value对全部拉出去,如果生产环境的键值对特别多的话,会对Redis的性能有很大的影响,推荐使用dbsize。

keys命令会遍历所有键,所以它的时间复杂度是o(n),当Redis保存了大量键时线上环境禁止使用keys命令。

dbsize命令

dbsize命令会返回当前数据库中键的总数。

dbsize命令在计算键总数时不会遍历所有键,而是直接获取 Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1)。

exists

检查键是否存在,存在返回1,不存在返回0。

del

删除键,无论值是什么数据结构类型,del命令都可以将其删除。返回删除键个数,删除不存在键返回0。同时del命令可以支持删除多个键。

键过期

expire

Redis支持对键添加过期时间,当超过过期时间后,会自动删除键,时间单位秒。

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

大于等于0的整数:键剩余的过期时间。

-1:键没设置过期时间。

-2:键不存在

除了expire、ttl命令以外,Redis还提供了expireat、pexpire,pexpireat、pttl、persist等一系列命令。

expireat key
timestamp: 键在秒级时间截timestamp后过期。

ttl命令和pttl都可以查询键的剩余过期时间,但是pttl精度更高可以达到毫秒级别,有3种返回值:

大于等于0的整数:键剩余的过期时间(ttl是秒,pttl是毫秒)。

-1:键没有设置过期时间。

-2:键不存在。

pexpire key
milliseconds:键在milliseconds毫秒后过期。

pexpireat key
milliseconds-timestamp键在毫秒级时间戳timestamp后过期。

在使用Redis相关过期命令时,需要注意以下几点。

1)如果expire key 的键不存在,返回结果为0:

2)如果过期时间为负值,键会立即被删除,犹如使用del命令一样:

3 ) persist命令可以将键的过期时间清除:

4)对于字符串类型键,执行set命令会去掉过期时间,这个问题很容易在开发中被忽视。

5 ) Redis不支持二级数据结构(例如哈希、列表)内部元素的过期功能,不能对二级数据结构做过期时间设置。

type

返回键的数据结构类型,例如键lijin是字符串类型,返回结果为string。键mylist是列表类型,返回结果为list,键不存在返回none

randomkey

随机返回一个键,这个很简单,请自行实验。

rename

键重命名

但是要注意,如果在rename之前,新键已经存在,那么它的值也将被覆盖。

为了防止被强行rename,Redis提供了renamenx命令,确保只有newKey不存在时候才被覆盖。

从上面我们可以看出,由于重命名键期间会执行del命令删除旧的键,如果键对应的值比较大,会存在阻塞Redis的可能性。

键名的生产实践

Redis没有命令空间,而且也没有对键名有强制要求。但设计合理的键名,有利于防止键冲突和项目的可维护性,比较推荐的方式是使用“业务名:对象名: id : [属性]”作为键名(也可以不是分号)。、

例如MySQL 的数据库名为mall,用户表名为order,那么对应的键可以用"mall:order:1",
"mall:order:1:name"来表示,如果当前Redis 只被一个业务使用,甚至可以去掉“order:”。

在能描述键含义的前提下适当减少键的长度,从而减少由于键过长的内存浪费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值