Key(键)

 Del     语法:DEL  Key [key ...]     删除给定的一个或者多个key  不存在的key会被忽略。

 返回值: 被删粗key的数量# 删除单个 key


redis> SET name huangz
OK redis> DEL name
(integer) 1 # 删除一个不存在的 key redis> EXISTS phone
(integer) 0 redis> DEL phone # 失败,没有 key 被删除
(integer) 0 # 同时删除多个 key redis> SET name "redis"
OK redis> SET type "key-value store"
OK redis> SET website "redis.com"
OK redis> DEL name type website
(integer) 3 DUMP 用于序列化给定key 并返回被序列化的值 redis>dump key_name
redis>set greeting "hello,dumping world!"
redis>dump greeting
"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
redis>dump not-exists-key
(nil) Exists 检查给定key是否存在
时间复杂度O(1)
返回值 若key存在 返回1,否则返回0.
redis>set db "redis"
ok
redis>exists db
(integer) 1
redis>del db
redis>exists db
(integer) 0
EXPIRE   EXPIRE key seconds
为给定key 设置生存时间,当key过期时(生存时间为0 )它会被自动删除。
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),
这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。 rename 命令 改名后的key的生存时间和改名前一样。
persist命令 可以在不删除key 情况下 移除key的生存时间,让key重新成为一个持久的key 过期时间精确度 redis2.4版本中 过期时间延迟在1秒内 ---即使key已经过期,但它还是可能在过期一秒之内被访问到。延迟被降低到1毫秒
时间复杂度  O(1)
返回值 设置成功返回1,key不存在或者不能为key设置生存时间时(比如在低于2.13版本的reids中更新key的时间)返回0 redis>set cache_page "www.google.com"
ok
redis> expire cache_page 30 #设置过期时间为30秒
(integer)1
redis>TTL cache_page #查看剩余生存时间
(integer) 23
redis>expire cache_page 3000 #更新过期时间
(integer)1
reids>TTL cache_page
(integer) 2996 EXPIREAT key timestamp expireat的作用和expire 类似 都是用于key 设置生存时间
不同于Expireat 命令接受的时间参数是UNIX 时间戳 时间复杂度 O(1)
返回值 如果生存时间设置成功 返回1
如果key不存在或者没办法设置生存时间 返回0 redis> set cache www.google.com
ok
redis>expirreat cache 1355292000 #这个key将在2012.12.12过期
(interger)1
redis>TTL cache
(interger) 45081860 KEYS
keys pattern 查找所有符合给定模式pattern的key
keys * 匹配数据库中所有key
keys h?llo 匹配hello,hallo 和hxllo等
keys h*llo 匹配hllo 和 heeeello等
keys h[ae]llo 匹配hello 和hallo ,但是不匹配hillo
特殊符号用\隔开 keys 的速度非常快 但在一个大的数据库中使用它仍然可能造成性能问题。如果你需要从一个数据库集中查找特定的key 你最好还是用redis的集合结构set来代替
时间复杂度 O(N)
返回值:符合给定模式的key列表

MIGRATE MIGRATE HOST PORT key destination-db timeout [copy] [replace]
将key 从原子性地当前实例传送到目标实例的指定数据库,一旦传送成功 key保证会出现在目标实例上,而当前实例上的key会被删除
实例:
先启用两个redis实例,一个使用默认的6379端口,一个使用7777端口
用客户端连接6379端口的实例,设置一个键,然后将它迁移到7777端口的实例上:
redis 127.0.0.1:6379>set greeting "Hello from 6379 instance"
ok
redis 127.0.0.1:6379>MIGRATE 127.0.0.1 7777 GREETING 0 1000
OK
redis 127.0.0.1:6379>exists greeting
(integer)0
使用另一个客户端,查看7777端口上的实例:
redis 127.0.0.1:7777>get greeting
Hello from 6379 instance
MOVE  move key db 
将当前数据库的key移动到给定的数据库db当中
如果当前数据库(源数据库)呵呵给定数据库有相同名字的给定key,或者key不存在于当前数据库,那么move没有任何效果
因此,也可以利用这一特性,将move当作锁原语
返回值 移动成功返回1 失败返回0

# key 存在于当前数据库

redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
OK

redis> SET song "secret base - Zone"
OK

redis> MOVE song 1 # 将 song 移动到数据库 1
(integer) 1

redis> EXISTS song # song 已经被移走
(integer) 0

redis> SELECT 1 # 使用数据库 1
OK

redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
(integer) 1

# 当 key 不存在的时候

redis:1> EXISTS fake_key
(integer) 0

redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
(integer) 0

redis:1> select 0 # 使用数据库0
OK

redis> EXISTS fake_key # 证实 fake_key 不存在
(integer) 0

# 当源数据库和目标数据库有相同的 key 时

redis> SELECT 0 # 使用数据库0
OK
redis> SET favorite_fruit "banana"
OK

redis> SELECT 1 # 使用数据库1
OK
redis:1> SET favorite_fruit "apple"
OK

redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
OK

redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败
(integer) 0

redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
"banana"

redis> SELECT 1
OK

redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
"apple"

OBJECT   OBJECT SUBCOMMAND [ARGUMENTS [arguments]]

object命令允许从内部察看给定key的redis对象

object命令有多个子命令

object refcount <key> 返回给定key 引用所存储的值次数。此命令用于排错

object encoding <key> 返回给定key锁存储的值 所使用的内部表示

object IDLETIME <KEY> 返回给定key 自存储依赖的空闲时间(idle,没有被读取也没有被写入),一秒为单位。

对象可以以多种方式编码:
字符串可以被编码为 raw (一般字符串)或 int (为了节约内存,Redis 会将字符串表示的 64 位有符号整数编码为整数来进行储存)。
列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示。
集合可以被编码为 intset 或者 hashtable 。 intset 是只储存数字的小集合的特殊表示。
哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示。
有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合。

REFCOUNT 和 IDLETIME 返回数字。
ENCODING 返回相应的编码类型

redis> SET game "COD" # 设置一个字符串
OK

redis> OBJECT REFCOUNT game # 只有一个引用
(integer) 1

redis> OBJECT IDLETIME game # 等待一阵。。。然后查看空闲时间
(integer) 90

redis> GET game # 提取game, 让它处于活跃(active)状态
"COD"

redis> OBJECT IDLETIME game # 不再处于空闲状态
(integer) 0

redis> OBJECT ENCODING game # 字符串的编码方式
"raw"

redis> SET big-number 23102930128301091820391092019203810281029831092 # 非常长的数字会被编码为字符串
OK

redis> OBJECT ENCODING big-number
"raw"

redis> SET small-number 12345 # 而短的数字则会被编码为整数
OK

redis> OBJECT ENCODING small-number
"int"

persist   persist key 移除给定key的生存时间,将这个key 从易失的 带生存时间key 转换成持久的 一个不带生存时间、永不过期的key

返回值: 当生存时间移除成功时,返回1;

    如果key不存在或者key 没有设置生存时间  返回0;

redis>set mykey "hello"

ok

redis>expire mykey 10 # 为key 设置生存时间

integer 1

redis>TTL mykey

integer 10

redis>persist  mykey # 移除key的生存时间

integer 1

redis>TTL mykey

integer -1

PEXPIREAT KEY milliseconds-timestamp

返回值 :如果生存时间设置成功,返回1.

    当key不存在或者没办法设置生存时间时,返回0

redis> SET mykey "Hello"
OK

redis> PEXPIREAT mykey 1555555555005
(integer) 1

redis> TTL mykey # TTL 返回秒
(integer) 223157079

redis> PTTL mykey # PTTL 返回毫秒
(integer) 223157079318

scan

语法:scan cursor [Match pattern] [count count]

scan 命令及其相关sscan命令 hscan命令和zscan命令都用于增量迭代

scan 命令用于迭代当前数据库中的数据库键

sscan 命令用于迭代集合键中的元素

Hscan 命令用于迭代哈希键中的键值对

zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

scan命令的基本用法

SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。

scan 命令的迭代过程示例:

redis 127.0.0.1:6379> scan 0
1) "17"
2) 1) "key:12"
2) "key:8"
3) "key:4"
4) "key:14"
5) "key:16"
6) "key:17"
7) "key:15"
8) "key:10"
9) "key:3"
10) "key:7"
11) "key:1"

redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"
2) "key:18"
3) "key:0"
4) "key:2"
5) "key:19"
6) "key:13"
7) "key:6"
8) "key:9"
9) "key:11"

在上面这个例子中, 第一次迭代使用 0 作为游标, 表示开始一次新的迭代。

第二次迭代使用的是第一次迭代时返回的游标, 也即是命令回复第一个元素的值 —— 17 。

从上面的示例可以看到, SCAN 命令的回复是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素。

在第二次调用 SCAN 命令时, 命令返回了游标 0 , 这表示迭代已经结束, 整个数据集(collection)已经被完整遍历过了。

以 0 作为游标开始一次新的迭代, 一直调用 SCAN 命令, 直到命令返回游标 0 , 我们称这个过程为一次完整遍历(full iteration)

redis --------- 使用命令(每天一个)的更多相关文章

  1. redis键命令

    1.ping命令用于检测redis是否启动 成功返回pong表示链接成功 2.在远程redis服务上执行命令 Redis-cli -h host -p port -a password 如果是连接本机 ...

  2. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  3. Redis常用命令入门5:有序集合类型

    有序集合类型 上节我们一起学习了集合类型,感受到了redis的强大.现在我们接着学Redis的最后一个类型——有序集合类型. 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序 ...

  4. Redis常用命令入门1:字符串类型命令

    Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...

  5. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  6. redis shell命令大全

    redis shell命令大全(转自http://blog.mkfree.com/posts/5105432f975ad0eb7d135964) 作者:oyhk   2013-1-28 3:11:35 ...

  7. Redis Key 命令

      Redis Key 命令     del key1 key2 - keyn 删除键为key1,key2-keyn,空格分隔. persist key 移除给定 key 的生存时间,将这个 key ...

  8. Redis 笔记与总结5 Redis 常用命令之 键值命令 和 服务器命令 && 高级应用之 安全性 和 主从复制

    Redis 提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在 Linux 终端使用. 1. 键值相关命令: 2. 服务器相关命令 键值相关命令 ① keys 命令 返回满足给定 pat ...

  9. Redis常用命令速查 02_转

    一.Key Key命令速查: 命令 说明 DEL 删除给定的一个或多个 key,不存在的 key 会被忽略,返回值:被删除 key 的数量 DUMP 序列化给定 key,返回被序列化的值,使用 RES ...

随机推荐

  1. Android利用Volley异步载入数据完整具体演示样例(二)

    MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import ...

  2. HDU1171_Big Event in HDU【01背包】

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. 利用POI抽取word中的图片并保存在文件中

    利用POI抽取word中的图片并保存在文件中 poi.apache.org/hwpf/quick-guide.html 1.抽取word doc中的图片 package parse; import j ...

  4. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  5. openstack封装待调试

  6. MSP430:输入捕获

    在做超声模块时用到 //捕获上升沿 void Capture_Pos(void) { P2SEL |= Echo; //选择P23作为捕捉的输入端子 Timer1_A //TA1CCTL1 |=CM_ ...

  7. Nginx的alias与root的用法区别和location匹配规则

    1.alias与root的用法区别 最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录. location /abc/ { ...

  8. ckeditor使用时,第一次可以显示,修改后显示不了的问题

    1.谷歌浏览器会留有缓存,除去缓存后,就可以更改ckeditor了.下面是解决方法:

  9. kindeditor上传文件的使用

    在线富文本编辑器kindeditor配置(.Net Framework 3.5)   下载地址:http://kindeditor.net/down.php 解压放在项目要目录下, 在Bin目录下添加 ...

  10. Akka源码分析-Remote-Creating Actors Remotely

    在akka官网中关于远程actor交互,介绍了两种方法,一种是通过actorSelection查询,另一种是通过actorOf在远程节点创建一个actor.actorSelection我们之前的博客中 ...