zoukankan      html  css  js  c++  java
  • redis常用数据类型

    string

    string相当于Java的String

    常用命令

    INCR/DECR INCRBY/DECRBY
    GET/SET MGET/MSET GETSET APPEND

    SET 赋值操作 O(1)

    SET key value [EX seconds] [PX milliseconds] [NX|XX]

    • EX 过期参数单位为秒
    • PX 过期参数单位为毫秒
    • NX key不存在时赋值
    • XX key存在时赋值
    对已存在的key执行SET会使原key的ttl失效

    使用场景

    存储 计数器 分布式锁

    list

    list(列表)相当于Java的LinkedList,一般当做队列(右进左出)或栈(右进右出)使用

    常用命令

    LPUSH/RPUSH LPOP/RPOP/BLPOP/BRPOP RPOPLPUSH/BRPOPLPUSH LRANGE LREM LLEN

    LPUSH 将一个或多个元素element放至列表key的头部 O(1) 阻塞版BLPUSH

    LPUSH key element [element ...]

    RPOP 将列表key的尾部元素取出并返回 O(1) 阻塞版BRPOP

    RPOP key

    RPOPLPUSH 将列表source的尾元素放至列表destination的头部,并返回该列表 O(1)

    RPOPLPUSH source destination

    LRANGE 返回列表key中[start,stop]区间内的元素 O(s+n) s为start,n为区间内元素数量

    LRANGE key start stop

    start/stop值得说明:0表示第一个元素 1表示第二个元素 -1表示最后一个元素 -2表示最后第二个元素。故获取list所有元素就是LRANGE key 0 -1。start/stop超出list范围不会引起错误

    使用场景

    消息队列 监视器

    hash

    hash(字典)相当于Java的HashMap。

    常用命令

    HSET/HGET/HDEL/HEXISTS/HSETNX HMSET/HMGET HGETALL HINCRBY/HINCRBYFLOAT LREM LLEN

    HSET 将一个或多个hash中field的值设置为value 一对field/value的时间复杂度O(1),n对field/value即为O(n)

    HSET key field value [field value ...]

    HMSET于4.0之后计划废弃

    HSETNX 当且仅当field未存在于hash时,将它的值设置为value O(1)

    HSETNX key field value

    返回1:执行成功;返回0:hash已存在该field或执行失败

    HGET 返回hash中给定field的值 O(1)

    HGET key field

    HMGET 返回hash中一个或多个field的值。 O(n)

    HMGET key field [field ...]

    当key不存在时,返回含有nil的列表

    HINCRBY 为hash中field的值增加increment,increment可为负数 O(1)

    HINCRBY key field increment

    HGETALL 返回hash中所有的field和value O(n) n为hash大小

    HGETALL key

    使用场景

    存储

    set

    set(集合)相当于Java的HashSet。

    常用命令

    SADD/SREM SPOP SISMEMBER SMEMBERS SCARD SINTER/SUNION/SDIFF

    SADD 将一个或多个member元素加入到set中,已经存在的member元素将被忽略 一个member元素的时间复杂度O(1),n个member即为O(n)

    SADD key member [member ...]

    SREM 将一个或多个member元素从set中删除 O(n)

    SREM key member [member ...]

    SMEMBERS 返回set中的所有元素 O(n)

    SMEMBERS key

    使用场景

    去重 标签

    zset

    zset(有序列表),类似于Java中SortedSet和HashMap的结合体

    常用命令

    ZADD/ZREM ZSCORE ZCARD ZCOUNT ZRANGE/ZREVRANGE ZRANK/ZREVRANK

    ZADD 将一个或多个元素添加到zset中 时间复杂度O(MlgN)*,M代表添加的元素个数,N代表zset中元素个数

    ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

    • NX 仅member不存在时添加,存在时无操作
    • XX 仅member存在时更新其score,不存在时无操作
    • CH 返回更新的member数量;ZADD默认返回新增member的数量
    • INCR 自增member的score,相当于ZINCRBY,只有一对member/score有效

    ZREM 删除zset中一个或多个member 时间复杂度O(MlgN)*,M代表删除的元素个数,N代表zset中元素个数

    ZREM key member [member ...]

    ZSCORE 返回zset中member的score,member不存在则返回nil O(1)

    ZSCORE key member

    ZRANGE 返回zset中score为[start,stop]区间内的元素,升序排列 O(lgN+M) M代表返回的元素个数,N代表zset中元素个数

    ZRANGE key start stop [WITHSCORES]

    使用场景

    延时队列 排名



    参考
  • 相关阅读:
    Java动态代理(三)——模拟AOP实现
    Java动态代理(二)CGLIB动态代理应用
    Java动态代理(一)动态类Proxy的使用
    CGLIB实现动态代理
    初识Java微信公众号开发
    spring+ibatis事务管理配置
    什么是事务的传播特性
    Spring事务配置的五种方式
    Java语言基础(五) Java原始数据类型的分类以及数据范围
    Java语言基础(四) String和StringBuffer的区别
  • 原文地址:https://www.cnblogs.com/niceboat/p/12288061.html
Copyright © 2011-2022 走看看