1、简单描述

redis本质上是一个key-value db,value可以有多种类型(string、hash、set、sorted set、list等),本章节不讲这些类型的命令,这里是讲跟key相关的命令操作。

key本身是string类型,不支持边界符,比如my key 这种含有空格的名字是会报错的,mykey\n这样包含换行符的也不行,包含\r\n的会被特殊处理,暂不细说。

由于redis的数据是在内存中的,所以如果key的名字过长,会占用更多字节,另外就是查找的时候,会比长度短的key慢。但是key名称长度也不能过小,否则可读性差。

2、相关命令(下面所有截图是在redis 4.0.1上测试的结果,4.0.1是2017年7月发布的稳定版本)

1)exists命令 : 判断key是否存在,同时可以支持多个key的判断,返回存在的key的数量。

2)keys命令:支持模式匹配

3)type命令:查看key的类型

【注意】type命令只能查看一个key的类型,不支持多个key同时查询。

4)rename命令:重命名一个key为新的名称。如果新key本来是存在的,则会覆盖,如果旧key不存在,会报错。

如果修改的新key存在,会覆盖,而且新key的类型会跟着改变,比如myHash本来是hash类型,现在把myString改名字为myHash:

myHash本来是hash类型,把string类型的myString的名字改为myHash,会把原来存在的myHash这个key给覆盖掉了。

5)randomkey命令:随机返回一个key,如果为空,则返回nil,表示空串。

6)del命令:删除key,支持删除多个key,命令执行结果看上图。

7)renamenx命令:重命名一个旧key为一个新key,如果新key存在,则报错:

8)dbsize命令:查看key的数量

【注意】dbsize是统计的某个索引db下的key的数量。比如索引为0的有2个,索引为1的key有10个,那么在索引为0的当前环境下,dbsize会返回2,而不是返回12(即2+10)。

9)expire命令:设置过期时间。

10)ttl命令:获取过期的时间。

【注意】过期时间是可以被重置的,比如重新给key赋值。

【注意】expire设置如果给一个不存在的key过期时间,会返回错误信息。

【注意】对一个不存在的key执行ttl命令,会返回错误信息。

【注意】对一个设置了过期时间的key再次执行expire,会重置过期时间:

【注意】rename操作会使得新的key继承旧的key的过期时间,哪怕是新key和旧key有各自的过期时间和不同类型,只要新key是被旧key覆盖,那么新key的过期时间就是继承了旧ky的过期时间:

rename改名字,新key是存在的,所以rename后是被覆盖了,过期时间继承过来了:

11)select命令,选择一个一个db索引。默认是有16个db,默认是用的索引是0:

12)move命令:把key转移到某个索引号对应的db下

【注意】如果要转移的key不存在,或者已经存在于目标索引的db中,会返回0,表示转移失败:

12)flushdb命令:删除当前索引db的所有数据,其他索引db下的数据不受影响。

13)flushall命令:删除所有数据,所有索引db的数据全部删除。

多个索引db都有数据,一条flushall把所有的key都删了,这些命令的操作要慎重!!!

3、小结

1)expire命令设置过期时间,ttl获取过期时间;

2)rename允许新的名字是已存在的key名字,这样会覆盖,同时把旧key的过期时间延续过去。

3)flushdb和flushall命令会删除数据,慎用;

4)keys 命令会列出一大堆的key,如果key过多,会影响性能,慎用!

redis中与key相关的命令的更多相关文章

  1. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  2. Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性

    Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...

  3. 如何解决Redis中的key过期问题

    最近我们在Redis集群中发现了一个有趣的问题.在花费大量时间进行调试和测试后,通过更改key过期,我们可以将某些集群中的Redis内存使用量减少25%. Twitter内部运行着多个缓存服务.其中一 ...

  4. 单点登录filter根据redis中的key判断是否退出

    package com.ailk.biapp.ci.localization.cntv.filter; import java.io.IOException; import java.util.Has ...

  5. Redis 键(key)相关的命令及其它命令的查看地址

    Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME ...

  6. 转载文章(Redis中对key的操作)

    转载地址:http://www.cnblogs.com/stephen-liu74/archive/2012/03/26/2356951.html 一.概述: 在该系列的前几篇博客中,主要讲述的是与R ...

  7. redis中的key设置过期时间

    EXPIRE key seconds 为给定  key  设置生存时间,当  key  过期时(生存时间为  0  ),它会被自动删除. 在 Redis 中,带有生存时间的  key  被称为『易失的 ...

  8. 超大批量删除redis中无用key+配置

    目前线上一个单实例redis中无用的key太多,决定删除一部分. 1.删除指定用户的key,使用redis的pipeline 根据一定条件把需要删除的用户统计出来,放到一个表里面,表为 del_use ...

  9. 代码实测:给redis中的key取一个正确的名字多么重要

    redis对写入的key长度有限制吗? 太长的key对性能有影响吗? key越长对性能影响越大? 如何评估键长度对性能的影响? talk is cheap, show me the code! 今天我 ...

随机推荐

  1. yaml在python中的应用简单整理

    #简单介绍============================================================== YAML使用寄主语言的数据类型,这在多种语言中流传的时候可能会引 ...

  2. Oracle单行函数基础运用

    单行函数 整个SQL的精髓:select语句+单行函数(背) 字符串函数 常用的处理字符串的函数有如下: No. 函数名 含义 1 UPPER(c1)  upper 将字符串全部转为大写 2 LOWE ...

  3. java 之 简单工厂模式(大话设计模式)

    以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...

  4. 深入浅出多线程——ReentrantLock (一)

    ReentrantLock是一个排它重入锁,与synchronized关键字语意类似,但比其功能更为强大.该类位于java.util.concurrent.locks包下,是Lock接口的实现类.基本 ...

  5. PCL+VS2010环境配置

    PCL+VS2010环境配置 我本是效率至上的Linux党,但是PCL在Ubuntu下配置了几次都失败,不得不选择Windows 1.下载 http://go.rritw.com/www.pointc ...

  6. [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器

    部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...

  7. 用python批量修改文件名

    从youtube上当下来百来首mv,每个都需要去掉视频,这还挺好弄得,格式工厂一弄就完了,但是文件名,都带有乱七八糟的*啥的巴拉巴拉的,咋修改啊,几百首总不可能一个一个rename吧 #批量修改文件名 ...

  8. Ubuntu 17.04 安装

    不忘初心,方得始终. 今天听别人说17.04发布了,我是开心的不得了,赶紧下载了一个,准备安装在自己的本子上.这段时间已经花费了更多的时间在docker和OpenStack上面,没时间看新闻了,因此今 ...

  9. 51Nod--1018排序

    1018 排序 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出N个整数,对着N个整数进行排序 Input 第1行:整数的数量N(1 <= N  ...

  10. javascript设计模式——发布订阅模式

    前面的话 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在javascript开发中,一般用事件模型来替代传统的发布—订阅模 ...