Redis学习_数据类型操作命令
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 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 )的成员的数量