您的位置:首页 > 数据库 > Redis

Redis学习_数据类型操作命令

2019-05-26 21:03 281 查看

Redis学习_数据类型操作命令

  • 1.2 常用命令
  • 2. 哈希类型 hash
  • 2.2 常用命令
  • 3. 列表类型 list
  • 3.2 常用命令
  • 4. 集合类型 set
  • 4.2 常用命令
  • 5. 有序集合类型 zset
  • 5.2 常用命令
  • 1. 字符串类型 String

    1.1 基本命令

    1.1.1 设置值 — set

    • 语法: set key value
    • 作用: 将 value 的值 设置到 key 中
    • 注意: 对于已经设置的,则覆盖之前的值

    1.1.2 获得key所对应的值 — get

    • 语法: get key
    • 作用: 通过 key 获取 value
    • 注意: 如果这个没有该 key 则返回 nil 相当于java中的null
      ### 1.1.3 整型数 自增/自减 — incr/decr
    • 语法: incr / decr key
    • 作用: 对 key 对应的 value 进行自增一、自减一 ,并返回自增或自减后的值
    • 注意: 如果 key 存在 ,则 value 自增一 或者 自减一
    • 如果 key 不存在, 则创建一个键值对,初始为0 ,再进行自增或者自减
    • 如果 key 对应的 value 不是整数型,则报错
    • 自增自减操作为原子性操作,

    1.1.4 字符串后追加 — append

    • 语法: append key value
    • 作用: 在字符串后面追加一个字符串,并返回追加内容之后的总长度
    • 注意: 如果 key 存在,则追加
    • 如果 key 不存在 , 将 key 对应的 value 值设置成 value ,相当于 set 命令

    1.2 常用命令

    1.2.1 字符串长度 — strlen

    • 语法: strlen key
    • 注意: 如果 key 存在 ,返回字符串的长度
    • 如果 key 不存在,返回 0

    1.2.2 截取字符串 — getrange

    • 语法: getrange key start_index end_index
    • 作用: 截取字符串,为闭区间,包括start_index 和 end_index (相当于Java中的substring)
    • 注意: 下标从左往右依次为 0 1 2 3 4 …
    • 下标从右往左依次为 -1 -2 -3 -4 …
    • 下标越界不报错,会返回合理范围的字符串

    1.2.3 字符串替换 — setrange

    • 语法: setrange key offset value
    • 说明: 用 value 从 offset 开始覆盖 key 的存储的值 , 不存在的key做空白字符串。
    • 返回值,修改后的字符串的长度

    1.2.4 创建多个KV /获得多个 KV — mset / mget

    • 语法:

      mset : mset key value [ key value … ]
    • mget : mget key [ key… ] 得到结果的顺序和输入命令中key的顺序相同
    • 如果哪个key 不存在,则哪个key 返回的值为 (nil)
  • mset

  • mget

  • 2. 哈希类型 hash

    2.1 基本命令

    2.1.1 设置 field value — hset

    • 语法: hset key field value

    • 作用: 将对应 key 的hash表中的 域 field 的值 设置为 value

    • 注意:

      如果 key 不存在,则创建一个 hash ,并添加 field 和 value,并返回1
    • 如果 key 存在 如果 field 是 hash 表中新 field ,且设置成功,返回 1
    • 如果 field 已经存在 , 覆盖旧值,返回0
  • 如果 key 对应的不是 hash 类型 ,报错 (error) WRONGTYPE Operation against a key holding the wrong kind of value
  • key不存在创建新hash并设值,返回1

  • key存在设置新值,返回1

  • key存在覆盖旧值,返回0

  • key不是hash类型,报错

  • 2.1.2 获取key 对应hash 中field对应的value — hget

    • 语法: hget key field
    • 注意: 如果 key 不存在 ,返回 (nil)
    • 如果 key 存在 field 存在, 返回对应value值
    • field 不存在, 返回 (nil)
  • 如果 key 对应的不是 hash ,报错
  • 如果 key 不存在 ,返回 (nil)
  • 如果 key 存在 ,field 存在, 返回对应value值
  • 如果key 存在,field 不存在, 返回 (nil)
  • 如果 key 对应的不是 hash ,报错
  • 2.1.3 设置多个 field value — hmset

    • 语法: hmset key field value [ filed value … ]

    • 注意

      如果 key 不存在,创建并设值
    • 如果 key 存在 如果 field 不存在,创建
    • 如果 field 存在, 覆盖
  • 如果 key 类型不是 hash ,报错
  • 2.1.4 通过 field 或者多个 value — hmget

    • 语法: hmget key value [ value … ]
    • 注意:存在返回值,不存在返回 nil ,类型不对应报错

    2.1.5 获取hash 所有的 field value 对 — hgetall

    • 语法: hgetall key
    • 注意: 返回的是所有的键值对

    2.1.6 删除 hash 中多个 field value — hdel

    • 语法: hdel key field [ field … ]
    • 注意:存在删除,不存在忽略,返回删除的个数

    2.2 常用命令

    2.2.1 获取所有 field — hkeys

    • 语法: hkeys key
    • 作用: 返回hash 中所有的 field,如果类型不对应,返回空集

    2.2.2 获取所有的 value — hvals

    • 语法:hvals key
    • 作用: 返回 hash 中所有的value,如果类型不对应,返回空集

    • 类型不对应

    2.2.3 判段单个 field 在hash 中是否存在 — hexists

    • 语法: hexists key field
    • 返回值: 存在返回 1
    • 不存在返回 0
    • 类型错误返回 0

    3. 列表类型 list

    3.1 基本命令

    3.1.1 插入值 — lpush / rpush

    • 语法: 从左边插入: lpushkey value [ value … ]
    • 从右边插入: rpushkey value [ value … ]
    • 返回插入后元素的个数
  • 从左边插入:插入的值是逆序的
  • 从右边插入:插入的值是顺序的
  • 3.1.2 截取 — lrange

    • 语法: lrange key start_index end_index
    • 注意: 从左往右下标以此为 0 1 2 3 4
    • 从右往左下标依次为 -1 -2 -3 -4 -5
    • 下标超界则取合理范围的值
    • 类型不对应,报错

    3.1.3 返回下标所对应的值 — lindex

    • 语法: lindex key index
    • 注意: 合法下标返回下标对应的 value
    • 下标越界则返回 nil
    • 类型不对应,报错

    3.1.4 获取list 的长度 — llen

    • 语法: llen key
    • 注意: key 存在返回长度
    • key不存在返回0
    • 类型错误报错

    3.2 常用命令

    3.2.1 移除列表中某些元素 — lrem

    • 语法: lrem 19f07 key count value

    • 注意:根据参数 count 的值,移除列表中于参数 value 相等的元素

      count > 0 从左边开始移除 count 个
    • count < 0 从右边开始移除 count 个
    • count = 0 移除所有与value 相等的元素
    • 类型错误报错
    • 要删除元素的个数多于list中元素的个数,只删除有的元素
    • 返回移除元素的个数
  • count > 0 从左边开始移除 count 个

  • count < 0 从右边开始移除 count 个

  • count = 0 移除所有与value 相等的元素

  • 3.2.2 对指定下标的值进行替换 — lset

    • 语法: lset key index value
    • 注意: 下标越界报错
    • 支持从右往左的下标 -1 -2 -3 …
    • 类型错误报错

    3.2.3 在指定元素前或者后插入值 — linsert

    • 语法: linsert key BEFORE | ALFTER pivot value
    • 注意: BEFORE 和 AFTER
    • key 不存在 ,不执行任何操作,返回0
    • key 存在 pivot 存在,插入并返回新list的长度
    • pivot不存在,找不到pivot,返回 -1
  • key 不存在 ,不执行任何操作,返回0
  • key 存在, pivot 存在,插入并返回新list的长度
  • key存在,pivot不存在,找不到pivot,返回 -1
  • 4. 集合类型 set

    4.1 基本命令

    4.1.1 向集合中添加 — sadd

    • 语法: sadd key member [member…]
    • 作用: 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略,不会再加入。
    • 返回值:加入到集合的新元素的个数。不包括被忽略的元素。

    4.1.2 查看集合中的所有元素 — smembers

    • 语法: smembers key
    • 作用: 获取集合 key 中的所有成员元素
    • 注意: 不存在的 key 视为空集合
    • 类型错误报错
    • 没有元素的为空集

    4.1.3 查看某个元素是否是其成员 — sismember

    • 语法: sismember key member
    • 作用: 判断 member 元素是否是集合 key 的成员
    • 返回值: member 是集合成员返回 1,其他返回 0 。

    4.1.4 获取集合中元素的个数 — scard

    • 语法: scard key
    • 作用: 获取集合里面的元素个数
    • 返回值: key 的元素个数。 其他情况返回 0 ,类型错误报错。

    4.1.5 删除集合中的元素 – srem

    • 语法: srem key member [member…]
    • 作用: 删除集合 key 中的一个或多个 member 元素,不存在的元素被忽略。
    • 返回值: 成功删除的元素个数,不包括被忽略的元素。

    4.2 常用命令

    4.2.1 随机返回集合中count个元素 — srandmember

    • 语法: srandmember key [count]
    • 作用: 随机返回集合中一个元素,元素不删除,依然在集合中;
    • 注意: 没有count时,返回一个
    • 有count时 count 是正数, 返回包含 count 个数元素的集合, 集合元素各不相同。count超过set的大小,返回全部元素;
    • count 是负数,返回一个 count 绝对值的长度的集合, 集合中元素可能会重复多次。count超过set的大小,因为可以重复,所以返回count的绝对值个元素
  • 返回值:一个元素;多个元素的集合
  • 4.2.2 随机删除count个元素 — spop

    • 语法: spop key [count]
    • 作用: 从集合中随机删除count 个元素, 并返回删除的元素
    • 注意: count 不可以为负数,为负数报错
    • 没有count : 删除一个
    • 有 count :删除 count 个,count超过集合的大小,删除全部

    5. 有序集合类型 zset

    • redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
    • 不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。

    5.1 基本命令

    5.1.1 向有序集合中添加元素 — zadd

    • 语法: zadd key score member [score member…]
    • 作用: 将一个或多个 member 元素及其 score 值加入到有序集合 key 中,如果 member存在集合中,则更新值;score 可以是整数或浮点数;
    • 返回值:数字,新添加的元素个数

    5.1.2 返回排序后制定区间的元素(从大到小排序) — zrange

    • 语法: zrange key start stop [WITHSCORES]
    • 作用:查询有序集合,指定区间的内的元素。
    • 注意: 集合成员按 score 值从小到大来排序。
    • start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。以 -1 表示最后一个成员,-2 表示倒数第二个成员。
    • withscores 选项让 score 和 value 一同返回。
  • 返回值:自定区间的成员集合
  • 5.1.3 返回排序后制定区间的元素(从大到小排序) — zrevrange

    • 语法: zrevrange key start stop [WITHSCORES]
    • 作用: 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减**(从大到小)**来排列。其它同 zrange 命令。
    • 返回值:自定区间的成员集合

    5.1.4 删除指定元素 — zrem

    • 语法: zrem key member [member…]
    • 作用: 删除有序集合 key 中的一个或多个成员,不存在的成员被忽略
    • 返回值: 被成功删除的成员数量,不包括被忽略的成员。

    5.1.5 元素的个数 — zcard

    • 语法: zcard key
    • 作用: 获取有序集 key 的元素成员的个数
    • 返回值: key 存在返回集合元素的个数, key 不存在,返回 0

    5.2 常用命令

    5.2.1 获取有序集合中所有score介于min 和 max 之间的(从小到大) — zrangebyscore

    • 语法: zrangebyscore key min max [WITHSCORES ] [LIMIT offset count]
    • 作用:获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max)的成员,有序成员是按递增**(从小到大)**排序。
    • 注意: min ,max 是包括在内 , 使用符号 ( 表示不包括。
    • min , max 可以使用 -inf ,+inf 表示最小和最大
    • limit 用来限制返回结果的数量和区间。
    • withscores 显示 score 和 value
  • 找到成绩在 [ 60 , 75 ] 之间的姓名 (普通使用)
  • 找到成绩在 ( 60 , 90 ) 之间的姓名 (使用’('不包括边界值)
  • 找到成绩大于 85 的学生姓名 ( -inf +inf 的使用)
  • 找到成绩倒数第 2 和 第3 名 ( limit的使用 offset:从第几个开始 count :数量)
  • 5.2.2 获取有序集合中所有score介于min 和 max 之间的(从大到小) — zrevrangebyscore

    • 语法: zrevrangebyscore key max min [WITHSCORES ] [LIMIT offset count]
    • 作用: 返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减**(从大到小)**的次序排列。

    5.2.3 返回score在 min 和 max 之间成员的数量 — zcount

    • 语法: zcount key min max
    • 作用: 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: