redis 部分命令深入详解

keys* 命令的弊端

该命令的作用: 将所有的键输出。由于redis是单线程运行,因此线上redis的键值过多时,要谨用该命令,会造成服务器阻塞,如果想在线上遍历所有的键值,最好用scan命令

del和unlink命令的区别

del和unlink命令的作用都是删除key

不同的是del是阻塞操作,如果删除的key过多的话,可能阻塞时间会很长,unlink操作相比del会产生阻塞,该命令会在另一个线程中回收内存

type key命令 和object encoding key 的区别

type命令返回的时当前键的对外数剧结构类型,就是我们说的五种类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)

object encoding 命令返回的是redis存储value的内部编码

redis定义的所有的内部编码有

REDIS_ENCODING_INTlong类型的整数
REDIS_ENCODING_EMBSTR

embstr编码的简单动态字符串

REDIS_ENCODING_RAW简单动态字符串
REDIS_ENCODING_HT字典
REDIS_ENCODING_LINKEDLIST双端链表
REDIS_ENCODING_ZIPLIST压缩列表
REDIS_ENCODING_INTSET整数集合
REDIS_ENCODING_SKIPLIST跳跃表和字典

 

每种类型的对象都至少使用了两种不同的编码,目前的对应关系如下

 

SET,SETNX,SETXX的区别和联系

三个命令的作用

set 设置值

setnx 键必须不存在,才可以设置成功

setxx 键必须存在,才可以设置成功

联系

setnx,setxx相当于set命令的简化写法

setnx hello world  等同 set hello world nx

setxx hello world 等同 set hello world xx

区别

setnx ,setxx都无法设置过期时间,set命令可以

一个常见的场景是用setnx来做分布式锁,给key设置一个过期时间来作为锁的超时时间,由于setnx命令本身不能设置过期时间所以执行命令大概是setnx(key,value), expire(key,time)是两步执行非原子操作,expire未执行成功的话,会存在死锁的情况。因此要使用set命令来设置原子操作 set key value  time nx

LPUSH插入多个值时,插入顺序

如果插入多个值,那么各个 value 值按从左到右的顺序依次插入到表头

lpush mylist  a,b,c

最后列表的结果未c,b,a

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值