Key键的基本语法
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
keys |
查看当前库中所有的key,支持通配符 |
keys pattern |
keys * |
生产环境已禁止,因为可能长时间阻塞Redis;推荐使用scan |
exists |
判断某个key是否存在 |
exists key [key ...] |
exists k1 |
返回存在的key数量,不具体指出哪一个存在 |
type |
查看当前key所储存的值的类型 |
type key |
type k1 |
返回key的类型,如string、list等 |
del |
删除已存在的key |
del key [key ...] |
del k1 |
返回删除成功的key数量 |
expire |
给key设置过期时间(秒) |
expire key time |
expire k1 10 |
设置成功返回1,key不存在返回0 |
ttl |
以秒为单位返回key的剩余过期时间 |
ttl key |
ttl k1 |
key不存在返回-2,没有设置过期时间返回-1 |
persist |
移除给定key的过期时间,使其永不过期 |
persist key |
persist k1 |
移除成功返回1,key不存在或没有设置过期时间返回0 |
String的基本语法
String最多可存放512的数据
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
set |
设置给定key的值,如果key已存在则重写旧值 |
set key value |
set k1 v1 |
无视类型,直接覆盖旧值 |
get |
获取指定key的值,如果key不存在则返回nil |
get key |
get k1 |
如果key不存在,返回nil |
append |
将给定的value追加到key原值末尾 |
append key value |
APPEND k1 k1 |
如果key不存在,则设置key为value |
strlen |
获取指定key所储存的字符串值的长度 |
strlen key |
strlen k1 |
如果key储存的不是字符串,返回错误 |
setex |
设置key的值及过期时间(秒) |
setex key time value |
setex k1 10 v1 |
如果key已存在,替换旧值并设置新的过期时间 |
setnx |
只有在key不存在时设置key的值 |
setnx key value |
setnx k4 v4 |
如果key已存在,不做任何操作 |
getrange |
获取指定区间范围内的值 |
getrange key start end |
getrange k5 2 4 |
返回start到end范围内的子字符串 |
setrange |
覆盖key指定偏移量上的字符 |
setrange key offset value |
setrange k6 1 xxx |
从offset开始覆盖字符 |
incr |
将key中储存的数字值增一 |
incr key |
incr k1 |
如果key不存在,初始化为0再递增;非数字值会报错 |
decr |
将key中储存的数字值减一 |
decr key |
decr k1 |
如果key不存在,初始化为0再递减;非数字值会报错 |
incrby/decrby |
将key存储的数字值按step增减 |
incrby/decrby key step |
incrby k1 10 |
如果key不存在,初始化为0再执行;非数字值会报错 |
mset |
同时设置一个或多个key-value |
mset key1 value1 key2 value2 |
mset k1 v1 k2 v2 k3 v3 |
批量设置多个键值对 |
mget |
返回所有给定key的值 |
mget key1 key2 |
mget k1 k2 k3 |
如果某个key不存在,返回nil |
getset |
将给定key值设为value,并返回key的旧值 |
getset key value |
getset k1 wcc |
先获取旧值,然后设置新值 |
List的基本语法
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
lpush |
从列表左边(头部)插入一个或多个值 |
lpush key value [value ...] |
lpush k1 v1 v2 v3 |
插入成功返回列表长度 |
rpush |
从列表右边(尾部)插入一个或多个值 |
rpush key value [value ...] |
rpush k1 v4 v5 v6 |
插入成功返回列表长度 |
lrange |
返回列表中指定范围的元素 |
lrange key start end |
lrange k1 0 2 或 lrange k1 0 -1 |
start 和end 基于0索引,-1 表示最后一个元素 |
lpop |
移除并返回列表的第一个元素 |
lpop key |
lpop k1 |
移除成功返回被移除的元素,列表不存在或为空返回nil |
rpop |
移除并返回列表的最后一个元素 |
rpop key |
rpop k1 |
移除成功返回被移除的元素,列表不存在或为空返回nil |
lindex |
获取列表中指定索引位置的元素 |
lindex key index |
lindex k1 0 |
index 基于0索引,超出范围返回nil |
llen |
获取列表的长度 |
llen key |
llen k1 |
返回列表的长度,列表不存在返回0 |
lrem |
从列表中移除指定数量的指定元素 |
lrem key count value |
lrem k1 2 v1 |
count 为正数从头部开始移除,为负数从尾部开始移除;移除成功返回被移除的元素数量 |
linsert |
在列表中指定元素的前或后插入一个新元素 |
linsert key before/after pivot value |
linsert k1 before v1 v5 |
插入成功返回列表长度,pivot 不存在返回-1 |
lset |
将列表中指定索引位置的元素设置为新值 |
lset key index value |
lset k1 2 new_value |
index 基于0索引,超出范围或列表不存在返回错误 |
Set的基本语法
String类型的无序集合
底层是value为null的hash表
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
sadd |
向集合中添加一个或多个元素,已存在的元素将被忽略 |
sadd key value [value ...] |
sadd k1 v1 v2 v2 v3 v4 v5 v6 |
添加成功返回新添加的元素数量(不包括已存在的) |
smembers |
返回集合中的所有元素 |
smembers key |
smembers k1 |
返回集合中的所有元素,集合不存在返回空列表 |
sismember |
判断集合中是否包含指定元素,包含返回1,否则返回0 |
sismember key value |
sismember k1 v1 |
判断成功返回1或0,集合不存在返回0 |
scard |
返回集合的元素个数 |
scard key |
scard k1 |
返回集合的元素个数,集合不存在返回0 |
srem |
删除集合中的一个或多个元素,不存在的元素将被忽略 |
srem key value [value ...] |
srem k1 v1 v2 |
删除成功返回被删除的元素数量(不包括不存在的) |
spop |
随机删除集合中的一个元素并返回该元素 |
spop key |
spop k1 |
删除成功返回被删除的元素,集合为空或不存在返回nil |
srandmember |
随机返回集合中的指定数量的元素,但不删除这些元素 |
srandmember key count |
srandmember k1 2 |
返回指定数量的随机元素,集合元素不足时返回所有元素 |
smove |
将元素从源集合移动到目标集合中 |
smove source destination value |
smove k1 k2 v5 |
移动成功返回1,元素不存在或源集合不存在返回0 |
sinter |
返回两个或多个集合的交集元素 |
sinter key1 [key2 ...] |
sinter k1 k2 |
返回交集元素,至少一个集合不存在时返回空列表 |
sunion |
返回两个或多个集合的并集元素 |
sunion key1 [key2 ...] |
sunion k1 k2 |
返回并集元素,至少一个集合不存在时返回所有存在的集合元素 |
sdiff |
返回第一个集合与后面一个或多个集合的差集元素 |
sdiff key1 [key2 ...] |
sdiff k1 k2 |
返回差集元素,至少一个集合不存在时返回第一个集合的所有元素 |
Hash的基本语法
键值对的集合
key——Hash表(field1–value1,field2–value2,field3–value3…)
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
hset |
给哈希表中的字段赋值 |
hset key field value |
hset user name baizhan |
如果哈希表或字段不存在,则创建;如果字段已存在,则覆盖旧值 |
hget |
从哈希表中取出字段的值 |
hget key field |
hget user name |
如果哈希表或字段不存在,则返回nil |
hmset |
批量设置哈希的字段及值(已废弃,建议使用hset 的多个字段形式) |
hmset key field1 value1 field2 value2 ... |
hmset user1 name baizhan age 15 |
批量设置字段和值,如果哈希表不存在则创建 |
hexists |
判断哈希表中是否存在指定字段 |
hexists key field |
hexists user1 name |
存在返回1,不存在返回0 |
hkeys |
获取哈希表中所有的字段 |
hkeys key |
hkeys user1 |
返回哈希表中所有的字段列表 |
hvals |
获取哈希表中所有的值 |
hvals key |
hvals user1 |
返回哈希表中所有的值列表 |
hincrby |
为哈希表中的字段值加上增量 |
hincrby key field increment |
hincrby user1 age 10 |
字段值必须为整数,增量可以为正或负 |
hdel |
删除哈希表中的一个或多个指定字段 |
hdel key field1 field2 ... |
hdel user1 age |
删除成功返回被删除的字段数量,不存在的字段被忽略 |
hsetnx |
给哈希表中不存在的字段赋值 |
hsetnx key field value |
hsetnx user1 age 10 |
如果字段已存在,则操作无效并返回0;如果字段不存在,则设置值并返回1 |
Zset的基本语法
String集合,不允许重复,但可以排序,每条数据都关联一个分数,依据分数高低排序,其中分数可重复
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
zadd |
向有序集合中添加一个或多个元素及其分数 |
zadd key score1 value1 score2 value2 ... |
zadd k1 100 java 200 c++ 300 python 400 php |
如果元素已存在,则更新其分数;分数可以是整数或浮点数 |
zrange |
返回有序集合中指定索引范围内的元素 |
zrange key start end [withscores] |
zrange k1 0 -1 或 zrange k1 0 -1 withscores |
按分数递增排序;withscores 参数可选,用于返回元素分数 |
zrangebyscore |
返回有序集合中指定分数范围内的元素 |
zrangebyscore key minscore maxscore [withscores] |
zrangebyscore k1 200 400 |
按分数递增排序;withscores 参数可选,用于返回元素分数 |
zincrby |
为有序集合中元素的分数加上指定增量 |
zincrby key increment value |
zincrby k1 50 java |
为java 元素的分数加上50 |
zrem |
从有序集合中删除指定元素 |
zrem key value |
zrem k1 php |
删除php 元素 |
zcount |
统计有序集合中指定分数范围内的元素个数 |
zcount key minscore maxscore |
zcount k1 100 300 |
统计100分到300分之间的元素个数 |
zrank |
返回有序集合中指定元素的排名 |
zrank key value |
zrank k1 c++ |
返回c++ 元素在有序集合中的排名,从0开始 |
Bitmaps的基本语法
对字符串进行位的操作,合理使用可以提高效率
适合用于需要高效存储和查询大量布尔值(如打卡记录、活跃状态等)的场景。
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
setbit |
设置Bitmaps中某个偏移量的值 |
setbit key offset value |
setbit zhangsan:3 1 1 |
value只能是0或1;偏移量从0开始 |
getbit |
获取Bitmaps中某个偏移量的值 |
getbit key offset |
getbit sign 3 |
如果偏移量未设置值,则返回0 |
bitcount |
统计字符串被设置为1的bit数量 |
bitcount key [start end] |
bitcount sign 或 bitcount num 1 3 |
可以指定字节组范围进行统计;不指定范围则统计整个字符串 |
bitop |
将多个bitmaps通过求交集/并集方式合并成一个新的bitmaps |
bitop and/or destkey sourcekey1 sourcekey2 ... |
bitop and k3 k1 k2 或 bitop or k3 k1 k2 |
and 表示交集,or 表示并集;destkey 是目标key,sourcekey 是源key |
Geospatia的基本语法
操作地理空间数据,允许存储、查询和计算地理位置的相关信息。
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
geoadd |
将一个或多个经度、纬度、位置名称添加到指定的key中 |
geoadd key longitude latitude member [longitude latitude member ...] |
geoadd china 116.405285 39.904989 beijing |
经度在前,纬度在后;可以同时添加多个位置 |
geopos |
从给定的key里返回所有指定名称的位置(经度和纬度) |
geopos key member [member ...] |
geopos china shanghai beijing |
返回指定名称的经纬度;不存在的名称返回nil |
geodist |
返回两个给定位置之间的距离 |
`geodist key member1 member2 [m |
km |
ft |
georadius |
以给定的经纬度为中心,返回与中心的距离不超过给定最大距离的所有位置元素 |
`georadius key longitude latitude radius m |
km |
ft |
Hyperloglog的基本语法
用于基数估算
适合用于需要估算大量集合中唯一元素数量的场景,例如统计网站的独立访客数量。
提供的基数是估计值,而不是精确值,但它在处理大量数据时非常高效且占用较少的内存空间。
命令 |
描述 |
语法格式 |
示例 |
注意事项 |
pfadd |
将所有元素参数添加到HyperLogLog数据结构中 |
pfadd key element1 element2 ... |
pfadd book1 uid1 uid2 uid3 |
如果至少有一个元素被添加,则返回1;否则返回0 |
pfcount |
计算HyperLogLog的近似基数,可以计算多个HyperLogLog的基数总和 |
pfcount key1 key2 ... |
pfcount book1 或 pfcount book1 book2 |
基数是估计值,不是精确值;可以计算多个key的基数总和 |
pfmerge |
将一个或多个HyperLogLog合并成一个新的HyperLogLog |
pfmerge destkey sourcekey1 sourcekey2 ... |
pfmerge book book1 book2 |
合并后的HyperLogLog将包含所有源HyperLogLog中的唯一元素 |