• redis3常用命令


    字符串set

    设置值[O(1)]

    set key value [ex seconds] [px milliseconds] [nx|xx]
    
    • ex seconds:为键设置秒级过期时间。

    • px milliseconds:为键设置毫秒级过期时间。

    • nx:键必须不存在,才可以设置成功,用于添加。

    • xx:与nx相反,键必须存在,才可以设置成功,用于更新。

      redis还提供了setex和setnx

    setex key seconds value
    setnx key value
    

    demo证明 nx、xx的区别

    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> setnx hello world
    (integer) 0
    127.0.0.1:6379> set hello jedis xx
    OK
    127.0.0.1:6379> get hello
    "jedis"
    127.0.0.1:6379> set hello word
    OK
    127.0.0.1:6379> get hello
    "word"
    127.0.0.1:6379> set hello2 jedis xx
    (nil)
    127.0.0.1:6379>
    

    nx仅当key不存在时才可set(应用于分布式锁),xx仅当key存在才可set

    获取值[O(1)]

    get key
    

    删除[O(1)]

    del key [key...]
    

    批量[O(k)]

    ​ k为key长度

    mset key value [k v...]
    
    mget key [key ...]
    

    计数[O(1)]

    incr key
    

    ​ 从0自增,且为单线程无CAS开销

    ​ 还提供decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数)[O(1)]

    decr key
    incrby key increment 
    decrby key decrement 
    incrbyfloat key increment
    

    追加值[O(1)]

    append key value
    

    ​ 向字符串尾部追加值

    字符串长度[O(1)]

    strlen key
    

    redis中每个中文占用3个字节

    设置并返回原值[O(1)]

    getset key value
    

    设置指定位置字符[O(1)]

    setrange key offeset value
    

    获取部分字符串[O(n)]

    ​ n为字符串长度

    getrange key start end
    

    查看key编码

    object encoding key
    

    哈希h

    设置值[O(1)]

    hset key field value
    hsetnx key fiedl value
    

    获取值[O(1)]

    hget key field
    

    删除field[O(k)]

    ​ k为field总数

    hdel key field [field ...]
    

    返回结果为成功删除field的个数

    计算field个数[O(1)]

    hlen key
    

    批量[O(k)]

    ​ k为field总数

    hmget key field [field ...]hmset key field value [field value ...]
    

    判断field是否存在[O(1)]

    hexists key field
    

    获取所有field[O(n)]

    ​ n为field总数

    hkeys key
    

    获取所有value[O(n)]

    ​ n为field总数

    hvals key
    

    获取所有的field-value[O(n)]

    ​ n为field总数

    hgetall key
    

    自增[O(1)]

    hincrby key field
    hincrbyfloat key field
    

    计算字符串长度(v3.2+)[O(1)]

    hstrlen key field
    

    列表L

    添加

    右插[O(k)]

    ​ k是元素个数

    rpush key value [value ...]
    

    左插[O(k)]

    ​ k是元素个数

    lpush key value [value ...]
    

    在某个元素前或后插入[O(n)]

    ​ n是target_val距离列表头或尾的距离

    linsert key before|after target_val value
    

    查找

    列出元素(L -> R)[O(s+n)]

    ​ s是start的偏移量,n是start到end的范围

    lrange key start endlrange key 0 -1
    
    • 索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N。
    • lrange中的end选项包含了自身

    获取指定下标的元素[O(n)]

    ​ n是索引偏移量

    lindex key index
    

    获取列表长度[O(1)]

    llen key
    

    删除

    左弹[O(1)]

    lpop key
    

    右弹[O(1)]

    rpop key
    

    删除指定元素[O(1)]

    lrem key count value
    
    • count>0,从左到右,删除最多count个元素。

    • count<0,从右到左,删除最多count绝对值个元素。

    • count=0,删除所有。

    按照索引范围保存列表[O(n)]

    ​ n是要保存元素的个数,即 end - start + 1

    ltrim key start end
    

    修改指定索引下标的元素[O(n)]

    ​ n是索引偏移量

    lset key index newValue
    

    阻塞操作[O(1)]

    blpop key [key ...] timeout 
    

    ​ timeout:阻塞时间(单位:秒)

    • 列表为空
      • 如果为0,则一直阻塞。
      • 如果此期间添加了数据,客户端立即返回
    • 列表不为空
      • 客户端会立即返回。
    brpop key [key ...] timeout
    
    • 如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回
    • 如果多个客户端对同一个键执行brpop,那么最先执行brpop命 令的客户端可以获取到弹出的值。
    • (此特性可用于发布订阅)

    集合s

    集合内操作

    添加

    sadd key element [element ...]
    

    ​ 返回结果为添加成功的元素个数

    删除

    srem key element [element ...]
    

    ​ 返回结果为成功删除元素个数

    计算元素个数[O(1)]

    ​ 直接用 Redis内部的变量,不会遍历集合所有元素

    scard key
    

    判断元素是否在集合中[O(1)]

    sismember key element
    

    随机返回指定个元素[O(count)]

    srandmember key [count]
    

    随机弹出元素[O(1)]

    spop key
    

    获取所有元素

    smembers key
    

    smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻 塞Redis的可能性,这时候可以使用sscan来完成

    集合间操作

    多个集合的交集

    sinter key [key ...]
    

    多个集合的并集

    suinon key [key ...]
    

    多个集合的差集

    sdiff key [key ...]
    

    交集、并集、差集的结果保存

    sinterstore destination key [key ...] 
    suionstore destination key [key ...] 
    sdiffstore destination key [key ...]
    

    有序集合z

    集合内

    添加成员

    zadd key score member [score member...]
    

    Redis3.2为zadd命令添加了nx、xx、ch、incr四个选项:

    • nx:member必须不存在,才可以设置成功,用于添加。

    • xx:member必须存在,才可以设置成功,用于更新。

    • ch:返回此次操作后,有序集合元素和分数发生变化的个数

    • incr:对score做增加,相当于后面介绍的zincrby。

    • 有序集合相比集合提供了排序字段,但是也产生了代价,zadd的时间 复杂度为O(log(n)),sadd的时间复杂度为O(1)

    计算成员个数[O(1)]

    zcard key
    

    计算某个成员的分数[O(1)]

    zscore key member
    

    计算成员的排名

    zrank key member # 从低到高
    zrevrank key member
    

    删除成员

    zrem key member [member ...]
    

    增加成员的分数

    zincrby key increment member
    

    返回指定排名范围的成员

    zrange key start end [withscores]
    zrevrange key start end [withscores]
    

    返回指定分数范围的成员

    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
    

    ​ min和max还支持开区间(小括号)和闭区间(中括号),-inf和 +inf分别代表无限小和无限大

    返回指定分数范围成员个数

    zcount key min max
    

    删除指定排名内的升序元素

    zremrangebyrank key start end
    

    删除指定分数范围的成员

    zremrangebyscore key min max
    

    集合间

    交集

    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。

    并集

    zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
    
    三分热血值得你十二分努力。
  • 相关阅读:
    [原创]桓泽学音频编解码(13):AC3 位分配模块算法分析
    白话红黑树系列之一——初识红黑树
    白话红黑树系列之二——红黑树的构建
    数据驱动编程之表驱动法
    每周一算法之六——KMP字符串匹配算法
    HDOJ 1098 Ignatius's puzzle
    HDOJ 1097 A hard puzzle(循环问题)
    HDOJ 1019 Least Common Multiple(最小公倍数问题)
    辗转相除法_欧几里得算法_java的实现(求最大公约数)
    HDOJ 1020 Encoding
  • 原文地址:https://www.cnblogs.com/woooodlin/p/redis3_api_order.html
Copyright © 2020-2023  润新知