zoukankan      html  css  js  c++  java
  • Redis 客户端命令总结

    注意:括号里是参数,具体使用的时候不需要括号和逗号,直接使用空格分隔命令以及各个参数即可。

    1、对Key操作的命令

    exists(key):确认一个key是否存在。存在返回1,不存在返回0。

    del(key):删除一个 key。key 存在返回1,不存在返回0。

    expire(key, seconds):为给定 key 设置过期时间,以秒计。key 存在返回1,不存在返回0。

    expireat(key, seconds-timestamp):为给定 key 设置过期时间。以秒计,时间参数是 unix  时间戳。key 存在返回1,不存在返回0。(不清楚)

    pexpire(key, milliseconds):为给定 key 设置过期时间,以毫秒计。key 存在返回1,不存在返回0。

    pexpireat(key, milliseconds-timestamp):为给定 key 设置过期时间。以毫秒计,时间参数是 unix  时间戳。key 存在返回1,不存在返回0。(不清楚)

    ttl(key):以秒为单位返回 key 的剩余生存时间。永久 key 的返回-1。

    pttl(key):以毫秒为单位返回 key 的剩余生存时间。永久 key 的返回-1。

    persist(key):移除 key 的过期时间,key 将持久保持。

    keys(pattern):返回所有符合给定模式( pattern)的 key 。

    move(key, dbindex):将当前数据库中的 key 转移到 dbindex 数据库,dbindex 为0到15。

    rename(oldname, newname):将 key 由 oldname 重命名为 newname。若 newname 的 key 存在则删除 newname 表示的 key,然后再将 key 由 oldname 重命名为 newname。

    rnamenx(oldname, newname):将 key 由 oldname 重命名为 newname。若 newname 的 key 存在则不做操作。

    type(key):返回 key 所储存的值的类型。

    dump(key):序列化给定 key ,并返回被序列化的值。(不清楚)

    randomkey:从当前数据库中随机返回一个 key。

    2、对String操作的命令

    set(key, value):给名称为 key 的 string 赋予值 value。

    get(key):返回名称为 key 的 string 的 value。

    substr(key, start, end):返回名称为 key 的 string 的子字符串(start 到 end 之间,包括 start 和 end),start 和 end 为字符索引,从0开始。

    getrange(key, start, end):返回名称为 key 的 string 的子字符串(start 到 end 之间,包括 start 和 end),start 和 end 为字符索引,从0开始。

    getset(key, value):将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

    mset(key1, value1, key2, value2, …, keyN, valueN):同时给多个 string 赋值,名称为 key i 的 string 赋值 value i。

    mget(key1, key2,…, keyN):返回名称为 key1 到 keyN 的 string 的 value。

    setex(key, seconds, value):给名称为 key 的 string 赋予值 value。同时设定过期时间 seconds,以秒计。

    psetex(key, milliseconds, value):给名称为 key 的 string 赋予值 value。同时设定过期时间 milliseconds,以毫秒计。

    setnx(key, value):如果不存在名称为 key 的 string,则向库中添加 string,名称为 key,值为 value。key 存在则不添加。

    msetnx(key1, value1, key2, value2, …, keyN, valueN):同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。只要有一个 key 存在,所有的 key 都不会设置。

    strlen(key):返回 key 所储存的字符串值 value 的长度。

    incr(key):名称为 key 的 value 增1操作。该 value 必须为整数,否则报错。

    incrby(key, integer):名称为 key 的 value 增加 integer。该 value 必须为整数,否则报错。

    incrbyfloat(key, float):名称为 key 的 value 增加 float。该 value 必须为数字,否则报错。这个主要是能添加浮点量。

    decr(key):名称为 key 的 value 减1操作。该 value 必须为整数,否则报错。

    decrby(key, integer):名称为 key 的 value 减少 integer。该 value 必须为整数,否则报错。

    append(key, value):名称为 key 的 string 的值末尾附加 value。返回新 value 字符串的长度。

    3、对List操作的命令

    有序可重复

    rpush(key, value1, ..., valueN):在名称为 key 的 list 尾添加值为 value1 到 valueN 的元素。

    lpush(key, value1, ..., valueN):在名称为 key 的 list 头添加值为 value1 到 valueN 的元素。

    rpushx(key, value):为已存在的列表 key 尾部添加 value,返回添加后列表的长度。不存在则不添加,返回0。

    lpushx(key, value):为已存在的列表 key 头部添加 value,返回添加后列表的长度。不存在则不添加,返回0。

    linsert(key, before|after, pivot, value):在名称为 key 的 list 指定元素 pivot 的前面或者后面插入元素 value。如果指定元素 pivot 不存在,则返回-1,存在则返回插入元素后列表的总元素个数。

    llen(key):返回名称为 key 的 list 的长度。

    lrange(key, start, end):返回名称为 key 的 list 中 start 至 end 之间的元素(包括 start 和 end,下标从0开始。下同)。

    ltrim(key, start, end):截取名称为 key 的 list,保留 start 至 end 之间的元素,对原列表进行了修改。

    lindex(key, index):返回名称为 key 的 list 中 index 位置的元素。

    lset(key, index, value):给名称为 key 的 list 中 index 位置的元素赋值为 value,index 必须为列表中已有的下标。

    lrem(key, count, value):在名称为 key 的 list 中 删除 count 个值为 value 的元素。count 为 0,删除所有值为value的元素,count > 0 从头至尾删除 count 个值为 value 的元素,count < 0 从尾到头删除 |count| 个值为 value 的元素。

    lpop(key):返回并删除名称为 key 的 list 中的首元素。也就是将该列表中第一个元素返回,并且在列表中删除该元素。

    rpop(key):返回并删除名称为 key 的 list 中的尾元素。也就是将该列表中最后一个元素返回,并且在列表中删除该元素。

    blpop(key1, key2, …, keyN, timeout):lpop 命令的 block 版本。即当 timeout 为 0 时,若遇到名称为 key i 的 list 不存在或该 list 为空,则命令结束。如果 timeout > 0,则遇到上述情况时,等待 timeout 秒,如果问题没有解决,则对 key i+1 开始的 list 执行 lpop 操作。

    brpop(key1, key2,… keyN, timeout):rpop 命令的 block 版本。参考上一命令。

    rpoplpush(srckey, dstkey):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部。

    brpoplpush(srckey, dstkey, timeout):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部。 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

    4、对Set操作的命令

    无序不可重复

    sadd(key, member1, ..., memberN):向名称为 key 的 set 中添加元素 member1 到 memberN。

    srem(key, member1, ..., memberN):删除名称为 key 的 set 中的元素 member1 到 memberN。

    srandmember(key, count):随机返回名称为 key 的 set 的一个或多个(count)元素。不写 count 时默认为1。

    spop(key):随机返回并删除名称为 key 的 set 中一个元素。

    scard(key):返回名称为 key 的 set 的元素个数。

    smembers(key):返回名称为 key 的 set 的所有元素。

    smove(srckey, dstkey, member):将 member 元素从名称为 srckey 的 set 集合移到名称为 dstkey 的 set 集合。

    sismember(key, member):测试 member 是否是名称为 key 的 set 的元素,是的话返回1,不是的话返回0。

    sinter(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的交集。

    sinterstore(dstkey, key1, key2, …, keyN):求名称为key1 到 keyN 的 set 集合的交集并将交集保存到名称为 dstkey 的 set 集合。返回交集元素的个数。

    sunion(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的并集。

    sunionstore(dstkey, key1, key2, …, keyN):求名称为key1 到 keyN 的 set 集合的并集并将并集保存到名称为 dstkey 的 set 集合。返回并集元素的个数。

    sdiff(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的差集。

    sdiffstore(dstkey, key1, key2, …, keyN) :求名称为key1 到 keyN 的 set 集合的差集并将差集保存到名称为 dstkey 的 set 集合。返回差集元素的个数。

    5、对Zset操作的命令

    有序不可重复(sorted set)

    zadd(key, score1, member1, ..., scoreN, memberN):向名称为 key 的 zset 中添加元素 member1 到 memberN。如果该元素已经存在,则该元素的 score 更新为新的score。(score用于排序,为数字),返回新加元素的个数。

    zincrby(key, increment, member):向名称为 key 的 zset 中添加元素 member,其 score 值为 increment,返回 score。如果该元素已经存在,则该元素的 score 增加 increment,返回更新后的 score。

    zrem(key, member1, ... memberN):删除名称为 key 的 zset 中的元素 member1 到 memberN。

    zcard(key):返回名称为 key 的 zset 元素的个数。

    zscore(key, element):返回名称为 key 的 zset 中元素 element 的 score。元素不存在返回 null。

    zcount(key, min, max):计算名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素的总数。

    zrank(key, member):返回名称为 key 的 zset(元素已按 score 从小到大排序)中 member 元素的 rank(即 index,从0开始),若没有 member 元素,返回 null。

    zrevrank(key, member):返回名称为 key 的 zset(元素已按 score 从大到小排序)中 member 元素的 rank(即 index,从0开始),若没有 member 元素,返回 null。

    zrange(key, start, end):返回名称为 key 的 zset(元素已按 score 从小到大排序)中的 index 从 start 到 end 的所有元素。

    zrevrange(key, start, end):返回名称为 key 的 zset(元素已按 score 从大到小排序)中的 index 从 start 到 end 的所有元素。

    zrangebyscore(key, min, max):返回名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素。

    zremrangebyrank(key, min, max):删除名称为 key 的 zset(元素已按 score 从小到大排序) 中 rank >= min 且 rank <= max 的所有元素。

    zremrangebyscore(key, min, max):删除名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素。

    zunionstore / zinterstore(dstkeyN, key1, …, keyN, WEIGHTS w1, …, wN, AGGREGATE SUM|MIN|MAX):对 N 个 zset 求并集/交集,并将最后的集合保存在 dstkeyN 中。对于集合中每一个元素的 score,在进行 AGGREGATE 运算前,都要乘以对应的 WEIGHTS 参数。如果没有提供WEIGHTS,默认为1。默认的 AGGREGATE 是 SUM,即结果集合中元素的 score 是所有集合对应元素进行 SUM 运算的值,而 MIN 和 MAX 是指结果集合中元素的 score 是所有集合对应元素中最小值和最大值。

    6、对Hash操作的命令

    hset(key, field, value):向名称为 key 的 hash 中添加元素 field<—>value。

    hget(key, field):返回名称为 key 的 hash 中 field 对应的 value。

    hsetnx(key, field, value):在名称为 key 的 hash 中如果不存指定的 field,则添加元素 field<—>value。反之不添加。

    hmset(key, field1, value1, …, fieldN, valueN):向名称为 key 的 hash 中添加元素 field1<—>value1 到 fieldN<—>valueN。

    hmget(key, field1, …, fieldN):返回名称为 key 的 hash 中 field1 到 findN 对应的value。

    hincrby(key, field, integer):将名称为 key 的 hash 中 field 的 value 增加 integer,注意 value 类型必须为 integer。

    hincrbyfloat(key, field, float):将名称为 key 的 hash 中 field 的 value 增加 float,注意 value 类型必须为数字。和上面的区别是能增加浮点量。

    hexists(key, field):判断名称为 key 的 hash 中是否存在键为 field 的域,返回 0 或者 1。

    hdel(key, field):删除名称为 key 的 hash 中键为 field 的域,返回删除的数量。

    hlen(key):返回名称为 key 的 hash 中元素个数。

    hkeys(key):返回名称为 key 的 hash 中所有键 field。

    hvals(key):返回名称为 key 的 hash 中所有值 value。

    hgetall(key):返回名称为 key 的 hash 中所有的键 field 及其对应的值 value。

    7、对HyperLogLog操作的命令

    描述

    Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

    Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    命令

    pfadd(key, element1, ..., elementN):添加指定元素到 HyperLogLog 中。

    l-zcgredis5:1>pfadd runoobkey "redis" "mongodb" "mysql"
    "1"
    l-zcgredis5:1>pfadd runoobkey1 "redis" "mongodb" "mysql" "mysql"
    "1"

    pfcount(key1, ..., keyN):返回给定的 HyperLogLog 的基数估算值。

    l-zcgredis5:1>pfcount runoobkey1 runoobkey
    "3"

    pfmerge(destkey, sourcekey1, ..., sourcekeyN):将多个 HyperLogLog 合并为一个 HyperLogLog。

    l-zcgredis5:1>pfmerge myhll runoobkey runoobkey1
    "OK"

    8、发布订阅命令

    psubscribe(pattern1, ..., patternN):订阅一个或者多个给定模式的频道。

    punsubscribe(pattern1, ..., patternN):退订所有给定模式的频道。

    subscribe(channel1, ..., channelN):订阅给定的一个或多个频道。

    unsubscribe(channel1, ..., channelN):退订给定的一个或多个频道。

    pubsub(subcommand, argument):查看订阅与发布系统状态。

    publish(channel, message):将信息发送到指定的频道。

    9、事务命令

    描述

    Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。
    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    一个事务从开始到执行会经历以下三个阶段:

    • 开始事务。
    • 命令入队。
    • 执行事务。

    单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

    事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    命令

    discard:取消事务,放弃执行事务块内的所有命令。

    exec:执行所有事务块内的命令。

    multi:标记一个事务块的开始。

    unwatch:取消 WATCH 命令对所有 key 的监视。

    watch(key1, ..., keyN):监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

    示例

    如果在 set b 处失败,set a 已成功不会回滚,set c 还会继续执行。

    l-zcgredis5:1>multi
    "OK"
    
    l-zcgredis5:1>set a aaa
    "QUEUED"
    
    l-zcgredis5:1>set b bbb
    "QUEUED"
    
    l-zcgredis5:1>set c ccc
    "QUEUED"
    
    l-zcgredis5:1>exec
     1)  "OK"
     2)  "OK"
     3)  "OK"
    l-zcgredis5:1>

    10、脚本命令

    描述

    Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

    命令

    eval(script, numkeys, key1, ..., keyN, arg1, ..., argN):执行Lua脚本。

    evalsha(sha1, numkeys, key1, ..., keyN, arg1, ..., argN):执行 Lua 脚本。

    script exists(script1, ..., scriptN):查看指定的脚本是否已经被保存在缓存当中。

    script flush:从脚本缓存中移除所有脚本。

    script kill:杀死当前正在运行的 Lua 脚本。

    script load(script):将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

    示例

    l-zcgredis5:1>EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
     1)  "key1"
     2)  "key2"
     3)  "first"
     4)  "second"
    l-zcgredis5:1>

    11、连接命令

    quit:关闭当前连接

    auth(password):验证密码是否正确。

    echo(message):打印 message 字符串。

    select(index):切换到指定的数据库。

    ping:查看服务是否运行。

    l-zcgredis5:1>ping
    "PONG"

    12、服务器命令

    client kill(ip:port):关闭客户端连接。

    client list:获取连接到服务器的客户端连接列表。

    client setname(connection-name):设置当前连接的名称。

    client getname:获取连接的名称。

    client pause(timeout):在指定时间内终止运行来自客户端的命令。

    cluster slots:获取集群节点的映射数组。

    command:获取 Redis 命令详情数组。

    command count:获取 Redis 命令总数。

    command getkeys:获取给定命令的所有键。(不清楚)

    command info(command-name1, ..., command-nameN):获取指定Redis命令描述的数组。

    time:返回当前服务器时间。一个包含两个字符串的列表: 第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。

    config get(parameter):获取指定配置参数的值,parameyer 为 * 的时候,获取所有配置信息。

    config rewrite:对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写。

    config set(parameter, value):修改 redis 配置参数,无需重启。

    config resetstat:重置 INFO 命令中的某些统计数据。

    dbsize:返回当前数据库中 key 的数量。

    debug object(key):获取 key 的调试信息。

    debug segfault:执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。

    flushdb:删除当前数据库中的所有 key。

    flushall:删除所有数据库中的所有key。

    info(section):获取Redis服务器的各种信息和统计数值。section 为空的话会显示所有信息,section 值为 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace。

    save:将数据同步保存到磁盘。

    lastsave:返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。

    bgsave:将数据异步保存到磁盘。

    bgrewriteaof:异步执行一个 AOF(AppendOnly File) 文件重写操作。

    monitor:实时打印出 Redis 服务器接收到的命令,调试用。实时转储收到的请求。

    role:返回主从实例所属的角色。

    shutdown:将数据同步保存到磁盘,然后关闭服务。

    slaveof(ip:port):改变复制策略设置。将当前服务器转变为指定服务器的从属服务器(slave server)。如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。

    slave no one:对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。

    slowlog :管理 redis 的慢日志。

    sync:用于复制功能(replication)的内部命令。用于同步主从服务器。

  • 相关阅读:
    bzoj3930 [CQOI2015]选数
    bzoj4916 神犇和蒟蒻
    bzoj3439 Kpm的MC密码
    bzoj2535 [Noi2010]航空管制
    bzoj2600 [Ioi2011]ricehub
    控制和机器学习书籍推荐
    圆周率100位可以这样速记
    从哥德巴赫说开去(3)
    第一届熊赛试题解答
    Mathematical Reflections
  • 原文地址:https://www.cnblogs.com/wbxk/p/6211028.html
Copyright © 2011-2022 走看看