目录
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中的唯一元素 |