数据类型相关命令

未匹配的标注

数据类型

  • string, list,hash,set,zset,bitmaps,HyperLogLog,GEO一共 8 中数据类型

string

  • string 类型是二进制安全的, 意味着 string 可以存储任何数据, 例如图片或者序列化对象
  • string 类型的值最大可以达到 512M

常用命令

  • get 键名: 查询指定键名的值

  • set 键名 键值: 设置键值对

  • append 键名 键值: 给指定键名的键值追加内容

  • strlen 键名: 获取指定键名的值的长度

  • setnx 键名 键值: 只有当键名不存在的时候, 才会设置该键值对, 若键名存在, 则不设置

  • incr 键名: 将指定键名的值加 1, 该操作只能对值是数字的进行操作, 若值为空, 则在执行后的值为 1

  • decr 键名: 与上面相反, 是减 1, 若值为空, 则在执行后的值为 -1

  • incrby 键名 步长: 将指定键名的值加指定的数字 (自定义步长)

  • decrby 键名 步长: 与上面的指令相反, 是减指定的数字

  • mset 键名1 键值1 键名2 键值2 ...: 同时设置多个键值对

  • mget 键名1 键名2 ...: 同时获取多个键值

  • msetnx 键名1 键值1 键名2 键值2 ...: 当且仅当所有的键名都不存在的时候, 才能成功设置

  • getrange 键名 起始位置 结束位置: 截取指定键名的值的部分内容 (截取字符串), 截取的内容包含了起始位置和结束位置

  • setrange 键名 起始位置 键值: 从旧值的指定位置开始, 用新值去覆盖键名对应的旧值

  • setex 键名 过期时间 键值: 设置键值的时候, 同时设置过期时间, 单位是秒

  • getset 键名 键值: 获取到旧值, 并且用新值替换掉旧值


list

  • list 的值只能存 string, 不能存 Redis 中的其他数据类型

常用命令

  • lpush 键名 键值: 从左边插入单个元素, 列表中允许有重复的元素

  • lpush 键名 键值 1 键值 2 键值 3: 插入多个元素, 将多个键值按照从左往右的顺序依次插入, 例如: lpush name a b c, 那么顺序为 c b a

  • lpushx 键名 键值: 将键值插入到列表的开头, 并且要求列表必须存在, 且最少存在一个元素, 如果键不存在, 则什么事情都不做

  • rpush 键名 键值: 从右边插入单个元素, 列表中允许有重复的元素

  • rpush 键名 键值 1 键值 2 键值 3: 插入多个元素, 将多个键值按照从右往左的顺序依次插入, 例如: rpush name a b c, 那么顺序为 a b c

  • rpushx 键名 键值: 将键值插入到列表的末尾, 并且要求列表必须存在, 且最少存在一个元素

  • lpop 键名: 移除并返回列表 key 的头元素, 当 key 不存在的时候, 返回 nil

  • rpop 键名: 移除并返回列表 key 的尾元素, 当 key 不存在的时候, 返回 nil

  • rpoplpush 键名 1 键名 2: (键名 1 和键名 2 不同) 将第一个列表中最后的一个元素放到第二个列表的开头, 最后返回第一个列表中的最后一个元素

    • rpoplpush 键名 1 键名 2: (键名 1 和键名 2 同名) 将该列表中开头的元素放到末尾
  • lrem 键名 count value: 根据 count 的值, 从键名对应的键值中移除与 value 相同的值, 当键名不存在的时候, 返回 0

    • count > 0: 从表开头向表尾搜索, 移除与 value 相等的元素, 数量为 count

    • count < 0: 从表尾向表头搜索, 移除与 value 相等的元素, 数量为 count

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

  • llen 键名: 返回列表的长度

  • lindex 键名 index: 返回列表中下标为 index 的值

  • linsert key before|after pivot value: 将 value 插入到 key 对应的列表中, 插入的位置是位于 pivot 之前或者之后

    • pivot 不存在于列表中的时候, 返回0, 不执行任何操作

    • key 不存在的时候, 不执行任何操作

    • 命令执行成功后, 返回插入后列表的长度, 如果没有找到 pivot, 则返回 -1

  • lset key index value: 将 key 对应的列表中下标为 index 的值修改为 value, 操作成功返回 OK

    • index 超出范围或者是对一个空列表进行操作的时候, 会返回一个错误
  • lrange key start stop: 返回 key 对应的列表中的从下标为 start 开始到 stop 结束的元素, 包含下标是 start 的和 stop

  • ltrim key start stop: 裁剪 key 对应的列表, 只保留列表中从下标是 startstop 部分的内容, 其他的全删掉, 保留的内容包含下标是 startstop 的元素

  • ltrim key 1 -1: 移除列表中的第一个元素

  • 若列表为 ['l','l','e','h'], ltrim key 1 30, 则列表中会删除第一个元素


hash

常用命令

# 存储数据
hset key field value

# 获取数据
hget key field

# 批量操作
# 批量设置
hmset key field value [field value]...
# 批量获取
hmget key field [field...]

# 自增 (指定自增的值, 正负都可以)
hincrby key field increment

# 如果 key-field 不存在, 则正常添加, 如果存在, 则什么事情都不做
hsetnx key field value

# 检查 field 是否存在
hexists key field

# 删除 key 对应的field, 可以删除多个
hdel key field [field...]

# 获取当前 hash 结构中全部的 field 和 value
hgetall key

# 获取当前 hash 结构中全部的 field
hkeys key

# 获取当前 hash 结构中全部的 value
hvals key

# 获取当前 hash 结构中 field 的数量
hlen key

set

  • 无序的, 元素不允许重复

常用命令

# 存储数据
sadd key member [member...]

# 获取全部数据
smembers key

# 随机获取 count 个数据同时并移除该数据, count默认是 1
spop key count

# 取多个 set 的交集
sinter set1 set2 ...

# 取多个 set 的并集
sunion set1 set2 ...

# 取多个 set 的差集, 如下所示: 求的是存在于 set1 中但是不存在于 set2 中的元素, 如果将 set1 和 set2 调换位置的话, 那么求的则是存在于 set2 中但是不存在于 set1 中的元素
sdiff set1 set2

# 删除数据, 可以删除多个member
srem key member [member ...]

# 查看当前集合中是否包含某个 member 值
sismember key member

zset

  • 不允许重复, 且有序

常用命令

# 添加数据 (score 必须是数值, member 不允许重复, 可以添加多个值)
zadd key score member

# 修改 member 的 score(即分数) (如果 member 是存在于 key 中的, 则正常增加分数, 如果 member 不存在, 这个命令就相当于 zadd)
zincrby key increment member

# 查看指定 member 的分数
zscore key member

# 获取 zset 中数据的数量
zcard key

# 根据 score 的范围查询 member 的数量
zcount key min max

# 删除 zset 中的成员
zrem key member [member ...]

# 根据分数从小到大排序, 获取指定范围的数据 (如果不添加 withscores 的话, 返回的是 member, 如果添加了, 则返回的是 member 和其对应的分数)
zrange key start stop [withscores]

# 根据分数从大到小排序, 其他的同上
zrevrange key start stop [withscores]

# 根据分数获取 member (withscores 表示同时返回分数, 添加 limit 的话, 就和 MySQL 中的一样)
zrangebyscore key min max [withscores] [limit offset count]

# 表示不需要等于 min 值, 只需要大于即可, 最大值和最小值分别用 +inf 和 -inf 来表示
zrangebyscore key (min max [withscores] [limit offset count]

# 根据分数获取 member (withscores 表示同时返回分数, 添加 limit 的话, 就和 MySQL 中的一样)
zrangebyscore key max min [withscores] [limit offset count]

bitmaps

  • 不是一个真实的数据结构, 而是 string 类型上的一组面向 bit 操作的集合
  • 做状态统计的

常用命令

# 获取某一个 key 中的某个位置上的值, 如果该位置上没有值, 则返回0
getbit 键名 位置

# 设置值
setbit 键名 位置 值

# 统计指定 key 中 1 的数量
 bitcount key [start end]  # 如果不给 start 和 end 的话, 那就是全部都统计

 # 对指定的 key 按位进行交, 并, 非, 异或操作, 并将结果保存到 destkey 中
 # op 表示 and, or, not, xor
 bitop op destkey key1 [key2...]

HyperLogLog

  • 统计不重复的数据的数量

  • 只是记录数量, 并不会记录具体的数据

  • 用的是估算算法, 所以当数据量达到一定程度的时候, 数据会有误差

常用命令

# 添加数据
pfadd key value [value...]

# 统计数据
pfcount key [key...]

# 合并数据
pfmerge destkey sourcekey [sourcekey...]

GEO

  • 一般用于地理位置的计算

常用命令

# 添加坐标点
geoadd key longitude1(横坐标) latitude1(纵坐标) member1(名称,自己起的) [longitude2 latitude2 member2...]

# 获取坐标点
geopos key member [member...]

# 计算坐标点间的距离, 默认单位是米, 后面的单位也可以写 km 等
geodist key member1 member2 [单位]

# 根据坐标求范围内的数据
georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

# 根据点求范围内的数据
georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

# 获取指定点对应的坐标 hash 值
geohash key member [member...]

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~