zoukankan      html  css  js  c++  java
  • redis 命令大全

    全局命令:

    1、查看所有键:keys *
    2、键总数:dbsize
    3、检查键是否存在:exists key
    4、删除键:del key [key ...]
    5、键过期:expire key seconds ——当超过过期时间后,会自动删除键,例:expire hello 10
    6、键的剩余过期时间:ttl key ——返回键的剩余过期时间:大于等于0的整数:键剩余的过期时间;-1:键没设置过期时间;-2:键不存在

    7、键的数据结构类型:type key ——string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合);键不存在,则返回none

    字符串类型相关命令:

    1、设置值:set key value [ex seconds] [px milliseconds] [nx|xx] ——ex seconds:为键设置秒级过期时间;px milliseconds:为键设置毫秒级过期时间;nx:键必须不存在,才可以设置成功,用于添加;xx:与nx相反,键必须存在,才可以设置成功,用于更新。
    2、setex key seconds value
    3、setnx key value ——setex和setnx两个命令,它们的作用和ex和nx选项一样
    4、获取值:get key
    5、批量设置值:mset key value [key value ...]
    6、批量获取值:mget key [key ...]
    7、计数:incr key ——值不是整数,返回错误;值是整数,返回自增后的结果;键不存在,按照值为0自增,返回结果为1。
    8、自减:decr key
    9、自增指定数字:incrby key increment
    10、自减指定数字:decrby key decrement
    11、自增浮点数:incrbyfloat key increment
    12、向字符串尾部追加值:append key value
    13、字符串长度:strlen key
    14、设置并返回原值:getset key value
    15、设置指定位置的字符:setrange key offeset value ——例:setrange hello 0 e

    16、获取部分字符串:getrange key start end                 ——start和end分别是开始和结束的偏移量,偏移量从0开始计算

    哈希类型相关命令

    1、设置值:hset key field value
    2、设置值:hsetnx key field value ——set和setnx命令一样,只不过作用域由键变为field。
    3、获取值:hget key field
    4、删除field:hdel key field [field ...]
    5、计算field个数:hlen key
    6、批量设置field-value:hmget key field [field ...]
    7、批量获取field-value:hmset key field value [field value ...]
    8、判断field是否存在:hexists key field
    9、获取所有field:hkeys key
    10、获取所有value:hvals key
    11、获取所有的field-value:hgetall key
    12、自增指定数字:hincrby key field increment
    13、自增浮点数:hincrbyfloat key field increment

    14、计算value的字符串长度:hstrlen key field

    列表类型相关命令:

    1、从右向左插入元素:rpush key value [value ...]
    2、从左向右插入元素:lpush key value [value ...]
    3、向某个元素前或者后插入元素:linsert key before|after pivot value ——从列表中找到等于pivot的元素,在其前(before)或者后(after)插入一个新的元素value
    4、获取指定范围内的元素列表:lrange key start end                        ——索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N。lrange中的end选项包含了自身
    5、从左到右获取元素:lrange key 0 -1
    6、获取列表指定索引下标的元素:lindex key index
    7、获取列表最后一个元素:lindex key -1
    8、获取列表长度:llen key
    9、删除最左侧元素:lpop key
    10、删除最右侧元素:rpop key
    11、删除指定元素:lrem key count value             ——从列表中找到等于value的元素进行删除。count>0,从左到右,删除最多count个元素;count<0,从右到左,删除最多count绝对值个元素;count=0,删除所有。
    12、按照索引范围修剪列表:ltrim key start end      ——保留列表key第start+1个到第end+1个元素
    13、修改指定索引下标的元素:lset key index newValue
    14、阻塞式删除最左侧元素:blpop key [key ...] timeout
    15、阻塞式删除最右侧元素:brpop key [key ...] timeout     ——key[key...]:多个列表的键;timeout:阻塞时间(单位:秒)。
    1)列表为空:如果timeout=3,那么客户端要等到3秒后返回,如果timeout=0,那么客户端一直阻塞等下去:如果此期间添加了数据,客户端立即返回
    2)列表不为空:客户端会立即返回。
    3)如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回

    4)如果多个客户端对同一个键执行brpop,那么最先执行brpop命令的客户端可以获取到弹出的值。

    集合类型相关命令:

    1、添加元素:sadd key element [element ...]
    2、删除元素:srem key element [element ...]
    3、计算元素个数:scard key
    4、判断元素是否在集合中:sismember key element
    5、随机从集合返回指定个数元素:srandmember key [count] ——[count]是可选参数,如果不写默认为1
    6、从集合随机删除元素:spop key [count]
    7、获取所有元素:smembers key
    8、求多个集合的交集:sinter key [key ...]
    9、求多个集合的并集:suinon key [key ...]
    10、求多个集合的差集:sdiff key [key ...]
    11、将交集、并集、差集的结果保存
    sinterstore destination key [key ...]
    suionstore destination key [key ...]

    sdiffstore destination key [key ...]

    有序集合类型相关命令:

    1、添加成员:zadd key score member [score member ...]
    2、计算成员个数:zcard key
    3、计算某个成员的分数:zscore key member
    4、计算成员从分数从低到高的排名:zrank key member
    5、计算成员从分数从高到低的排名:zrevrank key member
    6、删除成员:zrem key member [member ...]
    7、增加成员的分数:zincrby key increment member
    8、返回指定排名范围的成员:
    zrange key start end [withscores] ——从低到高返回,如果加上withscores选项,同时会返回成员的分数
    zrevrange key start end [withscores]
    9、返回指定分数范围的成员:
    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
    zrangebyscore按照分数从低到高返回,withscores选项会同时返回每个成员的分数。[limit offset count]选项可以限制输出的起始位置和个数;同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大,例:zrangebyscore key (200 +inf withscores
    10、返回指定分数范围成员个数:zcount key min max
    11、删除指定排名内的升序元素:zremrangebyrank key start end
    12、删除指定分数范围的成员:zremrangebyscore key min max
    13、集合交集:zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
    destination:交集计算结果保存到这个键。
    numkeys:需要做交集计算键的个数。
    key[key...]:需要做交集计算的键。
    weights weight[weight...]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1。
    aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum。

    14、集合并集:zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]

    单键管理通用命令:

    1、键重命名:rename key newkey ——为了防止被强行rename,Redis提供了renamenx命令,确保只有newKey不存在时候才被覆盖
    2、随机返回一个键:randomkey
    3、键在seconds秒后过期:expire key seconds
    4、键在秒级时间戳timestamp后过期:expireat key timestamp
    5、查询键的剩余过期时间(毫秒级):pttl key
    6、键在milliseconds毫秒后过期:pexpire key milliseconds
    7、键在毫秒级时间戳timestamp后过期:pexpireat key milliseconds-timestamp
    在使用Redis相关过期命令时,需要注意以下几点。
    1)如果expire key的键不存在,返回结果为0:
    2)如果过期时间为负值,键会立即被删除,犹如使用del命令一样
    3)对于字符串类型键,执行set命令会去掉过期时间
    清除键的过期时间:persist key
    4)Redis不支持二级数据结构(例如哈希、列表)内部元素的过期功能,例如不能对列表类型的一个元素做过期时间设置。

    5)setex命令作为set+expire的组合,不但是原子执行,同时减少了一次网络通讯的时间。

    迁移键相关命令:

    1、在Redis内部进行数据迁移:move key db
    2、在不同的Redis实例之间进行数据迁移:dump+restore
    dump key         ——dump命令会将键值序列化,格式采用的是RDB格式。
    restore key ttl value ——在目标Redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,如果ttl=0代表没有过期时间。
    3、在Redis实例间进行数据迁移:migrate host port key|"" destination-db timeout [copy] [replace] [keys key [key ...]]
    migrate命令整个过程是原子执行的,不需要在多个Redis实例上开启客户端的,只需要在源Redis上执行migrate命令即可。
    host:目标Redis的IP地址。
    port:目标Redis的端口。
    key|"":在Redis3.0.6版本之前,migrate只支持迁移一个键,所以此处是要迁移的键,但Redis3.0.6版本之后支持迁移多个键,如果当前需要迁移多个键,此处为空字符串""。
    destination-db:目标Redis的数据库索引,例如要迁移到0号数据库,这里就写0。
    timeout:迁移的超时时间(单位为毫秒)。
    [copy]:如果添加此选项,迁移后并不删除源键。
    [replace]:如果添加此选项,migrate不管目标Redis是否存在该键都会正常迁移进行数据覆盖。

    [keys key[key...]]:迁移多个键,例如要迁移key1、key2、key3,此处填写“keys key1 key2 key3”。

    遍历键:

    1、全量遍历键:keys pattern     ——pattern使用的是glob风格的通配符:*代表匹配任意字符。[]代表匹配部分字符;
    2、渐进式遍历:scan cursor [match pattern] [count number] ——面向哈希类型、集合类型、有序集合的扫描遍历对应的命令分别是hscan、sscan、zscan
    ·cursor是必需参数,实际上cursor是一个游标,第一次遍历从0开始,每次scan遍历完都会返回当前游标的值,直到游标值为0,表示遍历结束。
    ·match pattern是可选参数,它的作用的是做模式的匹配。

    ·count number是可选参数,它的作用是表明每次要遍历的键个数,默认值是10,此参数可以适当增大。

    数据库管理命令:

    1、切换数据库:select dbIndex ——select 0 操作将切换到第一个数据库
    2、清除当前数据库:flushdb

    3、清除所有数据库:flushall

    慢查询:

    1、获取慢查询日志:slowlog get [n]
    2、获取慢查询日志列表当前的长度:slowlog len

    3、慢查询日志重置:slowlog reset

    事务相关:

    1、事务开始:multi
    2、事务结束:exec
    3、停止事务:discard

    4、判断key没有被其他客户端修改过:watch key

    Bitmaps相关:

    1、设置值:setbit key offset value ——设置键的第offset个位的值(从0算起)
    2、获取值:gitbit key offset
    3、获取Bitmaps指定范围值为1的个数:bitcount key [start][end] ——[start]和[end]代表起始和结束字节数
    4、Bitmaps间的运算:bitop op destkey key[key....]
    bitop是一个复合操作,它可以做多个Bitmaps的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destkey中。

    5、计算Bitmaps中第一个值为targetBit的偏移量:bitpos key targetBit [start] [end]

    HyperLogLog相关:

    1、向HyperLogLog添加元素:pfadd key element [element …]
    2、计算一个或多个HyperLogLog的独立总数:pfcount key [key …]

    3、合并:pfmerge destkey sourcekey [sourcekey ...] ——求出多个HyperLogLog的并集并赋值给destkey

    发布订阅相关:

    1、发布消息:publish channel message
    2、订阅消息:subscribe channel [channel ...]
    3、取消订阅:unsubscribe [channel [channel ...]]
    4、按照模式订阅和取消订阅:
    psubscribe pattern [pattern...]
    punsubscribe [pattern [pattern ...]]
    5、查看活跃的频道:pubsub channels [pattern] ——所谓活跃的频道是指当前频道至少有一个订阅者,其中[pattern]是可以指定具体的模式
    6、查看频道订阅数:pubsub numsub [channel ...]

    7、查看模式订阅数:pubsub numpat

    GEO相关:

    1、增加地理位置信息:geoadd key longitude latitude member [longitude latitude member ...] ——longitude、latitude、member分别是该地理位置的经度、纬度、成员
    2、获取地理位置信息:geopos key member [member ...]
    3、获取两个地理位置的距离:geodist key member1 member2 [unit]
    4、获取指定位置范围内的地理信息位置集合:
    georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
    georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
    georadius和georadiusbymember两个命令的作用是一样的,都是以一个地理位置为中心算出指定半径内的其他地理信息位置,不同的是georadius命令的中心位置给出了具体的经纬度,georadiusbymember只需给出成员即可。其中radiusm|km|ft|mi是必需参数,指定了半径(带单位)
    ·withcoord:返回结果中包含经纬度。
    ·withdist:返回结果中包含离中心节点位置的距离。
    ·withhash:返回结果中包含geohash,有关geohash后面介绍。
    ·COUNT count:指定返回结果的数量。
    ·asc|desc:返回结果按照离中心节点的距离做升序或者降序。
    ·store key:将返回结果的地理位置信息保存到指定键。
    ·storedist key:将返回结果离中心节点的距离保存到指定键。
    5、将二维经纬度转换为一维字符串:geohash key member [member ...]
    6、删除地理位置信息:zrem key member 

  • 相关阅读:
    Springboot websocket学习Demo
    webpack与vue使用
    图片服务器图片剪切处理
    时间字段设置默认值
    函数的递归
    数据类型检测及封装
    隔行变色
    if-else案例–开关灯
    作用域
    数据类型核心操作步骤和原理
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11864036.html
Copyright © 2011-2022 走看看