一、前戏

在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。
      在该篇博客中,我们将一如既往的给出所有相关命令的明细列表和典型示例,以便于我们现在的学习和今后的查阅。

二、理论

命令原型 时间复杂度 命令描述 返回值
KEYS pattern O(N) 时间复杂度中的N表示数据库中Key的数量。获取所有匹配pattern参数的Keys。需要说明的是,在我们的正常操作中应该尽量避免对该命令的调用,因为对于大型数据库而言,该命令是非常耗时的,对Redis服务器的性能打击也是比较大的。pattern支持glob-style的通配符格式,如*表示任意一个或多个字符,?表示任意字符,[abc]表示方括号中任意一个字母。 匹配模式的键列表。
DEL key [key ...] O(N) 时间复杂度中的N表示删除的Key数量。从数据库删除中参数中指定的keys,如果指定键不存在,则直接忽略。还需要另行指出的是,如果指定的Key关联的数据类型不是String类型,而是List、Set、Hashes和Sorted Set等容器类型,该命令删除每个键的时间复杂度为O(M),其中M表示容器中元素的数量。而对于String类型的Key,其时间复杂度为O(1)。 实际被删除的Key数量。
EXISTS key  O(1) 判断指定键是否存在。 1表示存在,0表示不存在。
MOVE key db  O(1) 将当前数据库中指定的键Key移动到参数中指定的数据库中。如果该Key在目标数据库中已经存在,或者在当前数据库中并不存在,该命令将不做任何操作并返回0。   移动成功返回1,否则0。
RENAME key newkey  O(1) 为指定指定的键重新命名,如果参数中的两个Keys的命令相同,或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。   
RENAMENX key newkey O(1) 如果新值不存在,则将参数中的原值修改为新值。其它条件和RENAME一致。 1表示修改成功,否则0。
PERSIST key O(1) 如果Key存在过期时间,该命令会将其过期时间消除,使该Key不再有超时,而是可以持久化存储。 1表示Key的过期时间被移出,0表示该Key不存在或没有过期时间。
EXPIRE key seconds  O(1)  该命令为参数中指定的Key设定超时的秒数,在超过该时间后,Key被自动的删除。如果该Key在超时之前被修改,与该键关联的超时将被移除。  1表示超时被设置,0则表示Key不存在,或不能被设置。
EXPIREAT key timestamp  O(1)  该命令的逻辑功能和EXPIRE完全相同,唯一的差别是该命令指定的超时时间是绝对时间,而不是相对时间。该时间参数是Unix timestamp格式的,即从1970年1月1日开始所流经的秒数。 1表示超时被设置,0则表示Key不存在,或不能被设置。 
TTL key  O(1) 获取该键所剩的超时描述。  返回所剩描述,如果该键不存在或没有超时设置,则返回-1。
RANDOMKEY O(1)   从当前打开的数据库中随机的返回一个Key。 返回的随机键,如果该数据库是空的则返回nil。
TYPE key  O(1)  获取与参数中指定键关联值的类型,该命令将以字符串的格式返回。 返回的字符串为string、list、set、hash和zset,如果key不存在返回none。
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]  O(N+M*log(M))  这个命令相对来说是比较复杂的,因此我们这里只是给出最基本的用法,有兴趣的网友可以去参考redis的官方文档。 返回排序后的原始列表。

三、实战

127.0.0.1:> flushdb
OK
127.0.0.1:> set mykey abc
OK
127.0.0.1:> set mykey1 hello
OK
127.0.0.1:> sadd mysetkey a b c
(integer)
127.0.0.1:> hset mmset username cuiyanwei
(integer)
127.0.0.1:> keys my*
) "mykey1"
) "mysetkey"
) "mykey"
127.0.0.1:> keys m*
) "mykey1"
) "mysetkey"
) "mmset"
) "mykey"
127.0.0.1:> del mmset mykey
(integer)
127.0.0.1:> keys m*
) "mykey1"
) "mysetkey"
127.0.0.1:> exists mykey
(integer)
127.0.0.1:> exists mykey1
(integer)
127.0.0.1:> move mykey1
(integer)
127.0.0.1:> select
OK
127.0.0.1:[]> exists mykey1
(integer)
127.0.0.1:[]> select
OK
127.0.0.1:> exists mykey1
(integer)
127.0.0.1:> rename mykey1 mykey
(error) ERR no such key
127.0.0.1:> keys m*
) "mysetkey"
127.0.0.1:> rename mysetkey mykey
OK
127.0.0.1:> rename mykey mysetkey
OK
127.0.0.1:> set mykey hello
OK
127.0.0.1:> keys m*
) "mysetkey"
) "mykey"
127.0.0.1:> rename mykey newkey
OK
127.0.0.1:> get mykey
(nil)
127.0.0.1:> get newkey
"hello"
127.0.0.1:> set oldkey world
OK
127.0.0.1:> renamenx newkey oldkey
(integer)
127.0.0.1:> get newkey
"hello"
127.0.0.1:> get oldkey
"world"
127.0.0.1:> expire newkey
(integer)
127.0.0.1:> ttl mykey
(integer) -
127.0.0.1:> ttl newkey
(integer)
127.0.0.1:> persist newkey
(integer)
127.0.0.1:> ttl newkey
(integer) -
127.0.0.1:> expire oldkey
(integer)
127.0.0.1:> ttl oldkey
(integer)
127.0.0.1:> set oldkey abc
OK
127.0.0.1:> ttl oldkey
(integer) -
127.0.0.1:> type cui
none
127.0.0.1:> type newkey
string
127.0.0.1:> sadd mysetkey a b c
(integer)
127.0.0.1:> sadd setkey
(integer)
127.0.0.1:> type setkey
set
127.0.0.1:> randomkey
"newkey"
127.0.0.1:>

C#Redis 常用key操作的更多相关文章

  1. 深度评测丨 GaussDB(for Redis) 大 Key 操作的影响

    本文分享自华为云社区<墨天轮评测:GaussDB(for Redis)大Key操作的影响>,作者: 高斯 Redis 官方博客. 在前一篇文章<墨天轮评测:GaussDB(for R ...

  2. Redis - 常用命令操作

    常用命令keys:        keys *        查看符合条件的所有key exists:        exists key    查看key是否存在 del:        del k ...

  3. Redis常用命令操作

    字符串类型: * 存储:set key value * 获取:get key * 无值返回nil * 删除:del key 哈希类型 hash: * 存储:hset key field value * ...

  4. Jedis对Redis的常用命令操作

    本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...

  5. 【redis】redis常用命令及操作记录

    redis-cli是Redis命令行界面,可以向Redis发送命令,并直接从终端读取服务器发送的回复. 它有两种主要模式:一种交互模式,其中有一个REPL(read eval print loop), ...

  6. PHP操作Redis常用技巧

    这篇文章主要介绍了PHP操作Redis常用技巧,结合实例形式总结分析了php针对redis的连接.认证.string.hash等操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了PHP操作Red ...

  7. redis常用的命令行以及操作

    redis常用的命令行以及操作 转载酱紫人的理直气壮 最后发布于2018-07-30 17:00:41 阅读数 805  收藏 转载地址:https://blog.csdn.net/li_lening ...

  8. Redis常用数据类型以及操作

    Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...

  9. redis 的使用 (基础, key操作, string类型操作)

    使用redis set 类型: 没有重复元素 list 链表类型 有重复累型 sort set 类型 没有重复元素 1.1 存储数据 读取数据 // 数据储存在 内存中 set name laowen ...

随机推荐

  1. PB常用函数

    弹出窗口:messagebox() 基本写法:Messagebox('标题','内容') 完整写法: MessageBox ( '标题','内容',图标,按键,默认值) (1)其中标题与内容为要显示的 ...

  2. Linux-目录与文件

    1. pwd - 打印当前工作目录 [root@VM_0_171_centos ~]# pwd /root 2. cd - Change the shell working directory. [r ...

  3. Git的一些资源链接

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  4. python threading模块

    #coding=utf-8 import threading from time import ctime,sleep def music(func): for i in range(2): prin ...

  5. MongoDB 无法创建抽象类的问题,

     无法创建抽象类BsonClassMap.RegisterClassMap 大家都知道抽象类是无法实例化的,即:不能new. 在以下这些情况会遇到这种问题: 1.基类是抽象类: 2.基类是接口: 由于 ...

  6. How do I convert an IIR filter into a FIR filter in digital signal processing?

    Maybe you were asking if there is some kind of design tool allowing to convert an IIR filter into an ...

  7. java实现点选汉字验证码

    package com.rd.p2p.web; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; im ...

  8. joi库 学习笔记

    零.背景 node.js 应用中,req.query / req.body 传来的参数需要做 valication( 合法性验证 ) 一.安装 https://github.com/hapijs/jo ...

  9. JavaScript 的 Async\/Await 完胜 Promise 的六

    参考:http://www.10tiao.com/html/558/201705/2650964601/1.html Node 现在从版本 7.6 开始就支持 async/await 了. 简介: A ...

  10. linux定时重启tomcat服务的脚本学习

    要求:在linux中定时重启一个tomcat服务 一:shell脚本即Shell Script [1],Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便 ...