Key(键)

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

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


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

  1. 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
  1. Hello from 6379 instance
  1. 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. [Algorithm] Determine if two strings are an anagram

    The anagram test is commonly used to demonstrate how an naive implementation can perform significant ...

  2. WPF 有趣的动画效果

    WPF 有趣的动画效果         这一次我要呈上一个简单的文章,关于给你的WPF apps加入美丽的光线动画,可是我对动画这东西可能有点入迷了.         实际上.我对动画如此的入迷,以至 ...

  3. Unity5.1 新的网络引擎UNET(十五) Networking 引用--中

    孙广东 2015.7.21 本节提供了与网络系统一起使用的组件的具体信息. 3.NetworkClient NetworkClient 是一个 HLAPI 类,管理网络连接到服务器 - - 相应着 U ...

  4. ViewPager中View的复用

    代码例如以下: public class MyViewPagerAdapter extends PagerAdapter { //显示的数据 private List<DataBean> ...

  5. Js通用验证

    //-----------------------------------------------------js 验证封装 zhy2014-07-10------------------------ ...

  6. leetcode题解||Palindrome Number问题

    problem: Determine whether an integer is a palindrome. Do this without extra space. click to show sp ...

  7. Linux对外连接port数限制

    左右时,開始大量抛例如以下异常: java.net.BindException:Cannot assign requested address atsun.nio.ch.Net.connect0(Na ...

  8. UITextView获取光标位置

    UITextRange *range = textView.selectedTextRange; //光标位置 CGRect  rect = [textView caretRectForPositio ...

  9. changing permissions of Read-only file system in linux

      up vote 2 down vote favorite 1 i use this command to make a bootable flash disk of linux mint sudo ...

  10. poj1201 Intervals——差分约束

    题目:http://poj.org/problem?id=1201 差分约束裸题: 设 s[i] 表示到 i 选了数的个数前缀和: 根据题意,可以建立以下三个限制关系: s[bi] >= s[a ...