螺竹编程
发布于 2024-05-18 / 6 阅读
0

Redis核心概念:Redis数据类型和命令

String

String是Redis基本的数据类型,一个Key对应一个Value。String类型的值最大能存储512MB数据。

Redis的String数据类型支持丰富的操作命令,常用的String操作命令如下表所示:

命令

说明

set

设置指定key的值

get

获取指定key的值

setnx

只有在key不存在时才设置key的值

getrange

返回key中字符串值的子字符

mset

同时设置一个或多个key-value对

setex

将值value关联到key,并将key的过期时间设为seconds(以秒为单位)

gebit

获取key所对应的字符串值指定偏移量上的位(bit)

sebit

设置或清除Key所对应的字符串值指定偏移量上的位

deer

将Key中存储的数字值减1

deerby

将Key所对应的值减去给定的减量值

Strlen

返回key所储存的字符串值的长度

msetnx

同时设置一个或多个Key-value对,在且仅在所有给定的key都不存在时

Incrby

将Key所存储的值加上给定的增量值

incrbyfloat

将key所存储的值加上给定的浮点增量值

setrange

用value参数覆写给定key所存储的字符串值,从偏移量offset开始

psetex

和setex相似,但它以毫秒为单位设置key的生存时间,而不是像setex那样,以秒为单位

append

如果key已经存在并且是一个字符串,则append将value追加到该字符串的末尾

getset

将给定Key的值设为value,并返回key的旧值

mget

获取(一个或多个)给定的key的值

incr

将在key中存储的数字值加一

Hash

Redis Hash是一个键值对集合。Redis的Hash列表支持的操作如下表所示:

命令

说明

hmset

同时将多个field-value对设置到散列表key中

hmget

获取所有给定字段的值

hset

将散列表key中field字段的值设为value

hgetall

获取散列表中指定key的所有字段和值

hget

获取存储在散列表中指定字段的值

hexists

查看散列表key中指定的字段是否存在

hincrby

为散列表key中指定字段的整数值加上增量increment

hlen

获取散列表中字段的数量

hdel

删除一个或多个散列表字段

hvals

获取散列表中的所有值

hincrbyfloat

为散列表key中指定字段的浮点数值加上增量increment

hkeys

获取所有散列表中的字段

hsetnx

只有在字段field不存在时,才设置散列表字段的值

List

Redis List是简单的字符串列表,按照插入顺序排序。我们可以添加一个元素到列表的头部或者尾部。列表最多可存储2 31 -1个元素。

命令

说明

lindex

通过索引获取列表中的元素

rpush

在列表中添加一个或多个值

lrange

获取列表指定范围内的元素

rpoplpush

移除列表的最后一个元素,将该元素添加到另一个列表中并返回

blpop

移除并获取列表的第1个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可移除的元素

brpop

移除并获取列表的最后一个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可以出的元素

brpoplpush

从列表中弹出一个值,将弹出的元素插入另一个列表中并返回它;如果列表没有元素,则会阻塞列表直到等待超时或发现可移除的元素

lrem

移除列表元素

llen

获取列表长度

ltrim

对一个列表进行修剪,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

lpop

移除并获取列表的第1个元素

lpushx

将一个或多个值插入已存在的列表头部

linsert

在列表的元素前或者后插入元素

rpop

移除并获取列表的最后一个元素

lset

通过索引设置列表元素的值

lpush

将一个或多个值插入列表头部

rpushx

为已存在的列表添加值

Set

Set是String类型的无序集合。集合是通过散列表实现的,所以添加、删除、查找的复杂度都是0(1)。Set支持的操作如下:

命令

说明

sunion

返回所有给定集合的并集

scard

获取集合的成员数

srandmember

返回集合中的一个或多个随机数

smembers

返回集合中的所有成员

sinter

返回给定所有集合的交集

srem

移除集合中的一个或多个成员

smove

将member元素从source集合移动到destination集合

sadd

向集合中添加一个或多个成员

sismember

判断member元素是否是集合key的成员

sdiffstore

返回给定集合的差集并将其存储在destination中

sdiff

返回给定集合的差集

sscan

迭代集合中的元素

sinterstore

返回给定集合的交集并将其存储在destination中

sunionstore

将所有给定集合的并集都存储在destination集合中

spop

移除并返回集合中的一个随机元素

ZSet

Redis ZSet和Set一样也是String类型元素的集合,且不允许有重复的成员,不同的是,每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序的。Redis ZSet支持的操作如下表所示:

命令

说明

zrevrank

返回有序集合中指定成员的排名,有序集合中的成员按分数值递减(从大到小)排序

zlexcount

在有序集合中计算指定字典区间内的成员数值

zunionstore

计算给定的一个或多个有序集的并集,并将其存储在新的Key中

zremrangebyrank

移除有序集合中给定的排名区间的所有成员

zcard

获取有序集合的成员数

zrem

移除有序集合中的一个或多个成员

zinterstore

计算给定的一个或多个有序集合的交集并将结果集存储在新的有序集合key中

zrank

返回有序集合中指定成员的索引

zincrby

在有序集合中对指定成员的分数加上增量increment

zrangebyscore

通过分数返回有序集合指定区间内的成员

zrangebylex

通过字典区间返回有序集合的成员

zscore

返回有序集合中成员的分数值

zremrangebyscore

移除有序集合中给定分数区间内的所有成员

zscan

迭代有序集合中的元素(包括元素成员和元素分值)

zrevrangebyscore

返回有序集合中指定分数区间内的成员,分数从高到低排序

zremrangebylex

移除有序集合中给定字典区间内的所有成员

zrevrange

返回有序集合中指定区间内的成员,通过索引按分数从高到低排序

zrange

通过索引区间返回有序集合成指定区间内的成员

zcount

计算有序集合中指定分数区间内的成员数量

zadd

向有序集合添加一个或多个成员,或者更新已存在成员的分数

Bitmap

通过操作二进制位记录数据。Redis Bitmap支持的操作如下表所示:

命令

说明

setbit

设置bitmap值

getbit

获取bitmap值

bitcount

获取指定范围内值为1的个数

destkey

对bitmap进行操作,可以是and(交集)、or(并集)、not(非集)、xor(异或)

HyperLogLog

被用于估计一个Set中元素数量的概率性的数据结构。Redis HyperLogLog支持的操作如下表所示:

命令

说明

pfadd

添加指定的元素到hyperloglog中

pfcount

返回给定hyperloglog的基数估算值

pfmerge

将多个hyperloglog合并为一个hyperloglog

Geospatial

用于地理空间关系计算,支持的操作如下表所示:

命令

说明

geohash

返回一个或多个位置元素的geohash表示

geopos

从key里返回所有给定位置的元素的位置(经度和维度)

geodist

返回两个给定位置之间的距离

georadius

以给定的经纬度为中心,找出某一半径内的元素

geoadd

将指定的地理空间位置(维度、经度、名称)添加到指定的Key中

georadiusbymember

找出位于指定范围内的元素,中心点由给定的位置元素决定