数据类型相关命令
数据类型
string
,list
,hash
,set
,zset
,bitmaps
,HyperLogLog
,GEO
一共 8 中数据类型
string
string
类型是二进制安全的, 意味着string
可以存储任何数据, 例如图片或者序列化对象string
类型的值最大可以达到 512M
常用命令
get 键名
: 查询指定键名的值set 键名 键值
: 设置键值对append 键名 键值
: 给指定键名的键值追加内容strlen 键名
: 获取指定键名的值的长度setnx 键名 键值
: 只有当键名不存在的时候, 才会设置该键值对, 若键名存在, 则不设置incr 键名
: 将指定键名的值加 1, 该操作只能对值是数字的进行操作, 若值为空, 则在执行后的值为 1decr 键名
: 与上面相反, 是减 1, 若值为空, 则在执行后的值为 -1incrby 键名 步长
: 将指定键名的值加指定的数字 (自定义步长)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
相同的值, 当键名不存在的时候, 返回 0count > 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
对应的列表, 只保留列表中从下标是start
到stop
部分的内容, 其他的全删掉, 保留的内容包含下标是start
和stop
的元素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...]
推荐文章: