Redis常用数据类型总结
数据类型 | 描述 | 常用命令 |
---|---|---|
String | 简单的键值对,值可以是字符串、整数或浮点数。适合缓存和计数器。 | SET , GET , INCR , DECR , MSET |
List | 有序的字符串列表,可以用作队列或堆栈。适合消息队列、任务队列。 | LPUSH , RPUSH , LPOP , RPOP , LRANGE |
Set | 无序的字符串集合,集合中的元素是唯一的。适合好友关系、标签。 | SADD , SREM , SMEMBERS , SINTER |
Hash | 存储键值对的集合,类似于Map或Dictionary。适合对象数据存储。 | HSET , HGET , HGETALL , HDEL |
ZSet | 有序集合,元素具有唯一性且每个元素关联一个评分(score)。适合排行榜、优先队列。 | ZADD , ZRANGE , ZREM , ZSCORE |
Bitmap | 位数组,可以进行按位操作,适合状态存储、计数。 | SETBIT , GETBIT , BITCOUNT , BITOP |
HyperLogLog | 用于基数统计,近似统计数据的唯一值数量。适合大规模数据基数统计。 | PFADD , PFCOUNT , PFMERGE |
Geo | 存储地理位置信息,支持地理空间操作。适合地理位置信息存储。 | GEOADD , GEODIST , GEORADIUS , GEOPOS |
Stream | 日志结构,用于存储消息流,支持消费组。适合实时日志、消息系统。 | XADD , XREAD , XGROUP , XACK |
1、字符串常用命令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
SET | 设置指定键的值 | SET key value | SET mykey "Hello" |
GET | 获取指定键的值 | GET key | GET mykey |
INCR | 将指定键的值加1(该值必须是整数) | INCR key | INCR counter |
DECR | 将指定键的值减1(该值必须是整数) | DECR key | DECR counter |
MSET | 同时设置多个键值对 | MSET key1 value1 key2 value2 | MSET key1 "Hello" key2 "World" |
MGET | 获取所有(一个或多个)给定键的值 | MGET key1 key2 | MGET key1 key2 |
APPEND | 将值追加到指定键的值末尾 | APPEND key value | APPEND mykey " World" |
STRLEN | 获取指定键的值的长度 | STRLEN key | STRLEN mykey |
SETRANGE | 用指定的字符串覆盖键中指定的偏移量开始的值 | SETRANGE key offset value | SETRANGE mykey 6 "Redis" |
GETRANGE | 返回存储在键中的字符串的子字符串 | GETRANGE key start end | GETRANGE mykey 0 4 |
SETEX | 设置键的值并设置过期时间(以秒为单位) | SETEX key seconds value | SETEX mykey 10 "Hello" |
PSETEX | 设置键的值并设置过期时间(以毫秒为单位) | PSETEX key milliseconds value | PSETEX mykey 10000 "Hello" |
SETNX | 只有在键不存在时,设置键的值 | SETNX key value | SETNX mykey "Hello" |
MSETNX | 同时设置一个或多个键-值对,只有在所有给定键都不存在时才会设置 | MSETNX key1 value1 key2 value2 | MSETNX key1 "Hello" key2 "World" |
GETSET | 将给定键的值设置为新值,并返回旧值 | GETSET key value | GETSET mykey "NewValue" |
INCRBY | 将键所储存的值加上指定的增量值(该值必须是整数) | INCRBY key increment | INCRBY counter 5 |
DECRBY | 将键所储存的值减去指定的减量值(该值必须是整数) | DECRBY key decrement | DECRBY counter 3 |
INCRBYFLOAT | 将键所储存的值加上指定的浮点数增量值 | INCRBYFLOAT key increment | INCRBYFLOAT counter 1.5 |
BITCOUNT | 统计字符串被设置为1的比特位的数量 | BITCOUNT key | BITCOUNT mykey |
BITOP | 对一个或多个保存二进制位的字符串键进行位元操作 | BITOP operation destkey key1 [key2 ...] | BITOP AND result key1 key2 |
SETBIT | 对键所储存的字符串值,设置或清除指定偏移量上的位 | SETBIT key offset value | SETBIT mykey 7 1 |
GETBIT | 对键所储存的字符串值,获取指定偏移量上的位 | GETBIT key offset | GETBIT mykey 7 |
2、哈希表Hash指令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
HSET | 为哈希表中的键设置值 | HSET key field value | HSET user:1000 name "John" |
HGET | 获取哈希表中指定字段的值 | HGET key field | HGET user:1000 name |
HGETALL | 获取哈希表中所有字段和值 | HGETALL key | HGETALL user:1000 |
HMSET | 同时为多个字段设置值 | HMSET key field1 value1 field2 value2 | HMSET user:1000 name "John" age 30 |
HMGET | 获取哈希表中指定字段的值 | HMGET key field1 field2 | HMGET user:1000 name age |
HDEL | 删除一个或多个哈希表字段 | HDEL key field1 [field2 ...] | HDEL user:1000 age |
HEXISTS | 检查哈希表中指定字段是否存在 | HEXISTS key field | HEXISTS user:1000 name |
HLEN | 获取哈希表中字段的数量 | HLEN key | HLEN user:1000 |
HKEYS | 获取哈希表中的所有字段名 | HKEYS key | HKEYS user:1000 |
HVALS | 获取哈希表中的所有值 | HVALS key | HVALS user:1000 |
HINCRBY | 为哈希表中的字段值加上指定增量(整数) | HINCRBY key field increment | HINCRBY user:1000 age 1 |
HINCRBYFLOAT | 为哈希表中的字段值加上指定增量(浮点数) | HINCRBYFLOAT key field increment | HINCRBYFLOAT user:1000 balance 12.5 |
HSTRLEN | 获取哈希表中字段值的长度 | HSTRLEN key field | HSTRLEN user:1000 name |
HSCAN | 迭代哈希表中的字段和值 | HSCAN key cursor [MATCH pattern] [COUNT count] | HSCAN user:1000 0 MATCH na* COUNT 10 |
3、列表List常用命令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
LPUSH | 将一个或多个值插入到列表头部 | LPUSH key value1 [value2] | LPUSH mylist "world" |
RPUSH | 将一个或多个值插入到列表尾部 | RPUSH key value1 [value2] | RPUSH mylist "hello" |
LPOP | 移除并返回列表的第一个元素 | LPOP key | LPOP mylist |
RPOP | 移除并返回列表的最后一个元素 | RPOP key | RPOP mylist |
LINDEX | 获取列表中指定索引的元素 | LINDEX key index | LINDEX mylist 0 |
LLEN | 获取列表长度 | LLEN key | LLEN mylist |
LRANGE | 获取列表指定范围内的元素 | LRANGE key start stop | LRANGE mylist 0 -1 |
LREM | 移除列表中与指定值相等的元素 | LREM key count value | LREM mylist 2 "hello" |
LSET | 将列表中指定位置的元素设置为新的值 | LSET key index value | LSET mylist 1 "world" |
LTRIM | 修剪列表,使其只保留指定区间内的元素 | LTRIM key start stop | LTRIM mylist 1 -1 |
RPOPLPUSH | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 | RPOPLPUSH source destination | RPOPLPUSH mylist anotherlist |
BLPOP | 移除并返回列表的第一个元素,如果列表没有元素则阻塞直到等待超时或发现可弹出元素为止 | BLPOP key [key2 ...] timeout | BLPOP mylist 0 |
BRPOP | 移除并返回列表的最后一个元素,如果列表没有元素则阻塞直到等待超时或发现可弹出元素为止 | BRPOP key [key2 ...] timeout | BRPOP mylist 0 |
BRPOPLPUSH | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回,如果列表没有元素则阻塞直到等待超时或发现可弹出元素为止 | BRPOPLPUSH source destination timeout | BRPOPLPUSH mylist anotherlist 0 |
4、集合set常用命令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
SADD | 向集合添加一个或多个成员 | SADD key member1 [member2] | SADD myset "hello" |
SREM | 移除集合中的一个或多个成员 | SREM key member1 [member2] | SREM myset "hello" |
SMEMBERS | 返回集合中的所有成员 | SMEMBERS key | SMEMBERS myset |
SISMEMBER | 判断成员元素是否是集合的成员 | SISMEMBER key member | SISMEMBER myset "hello" |
SCARD | 返回集合中的成员数量 | SCARD key | SCARD myset |
SDIFF | 返回一个集合与其他集合的差集 | SDIFF key1 [key2] | SDIFF myset1 myset2 |
SDIFFSTORE | 将一个集合与其他集合的差集存储在指定的集合中 | SDIFFSTORE destination key1 [key2] | SDIFFSTORE resultset myset1 myset2 |
SINTER | 返回一个集合与其他集合的交集 | SINTER key1 [key2] | SINTER myset1 myset2 |
SINTERSTORE | 将一个集合与其他集合的交集存储在指定的集合中 | SINTERSTORE destination key1 [key2] | SINTERSTORE resultset myset1 myset2 |
SUNION | 返回所有给定集合的并集 | SUNION key1 [key2] | SUNION myset1 myset2 |
SUNIONSTORE | 将所有给定集合的并集存储在指定的集合中 | SUNIONSTORE destination key1 [key2] | SUNIONSTORE resultset myset1 myset2 |
SRANDMEMBER | 返回集合中的一个随机成员 | SRANDMEMBER key | SRANDMEMBER myset |
SPOP | 移除并返回集合中的一个随机成员 | SPOP key | SPOP myset |
SMOVE | 将成员元素从一个集合移动到另一个集合 | SMOVE source destination member | SMOVE myset1 myset2 "hello" |
SSCAN | 迭代集合中的元素 | SSCAN key cursor [MATCH pattern] [COUNT count] | SSCAN myset 0 MATCH he* COUNT 10 |
5、有序集合Sorted Set,ZSet常用命令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
ZADD | 向有序集合添加一个或多个成员,或更新已存在成员的分数 | ZADD key score1 member1 [score2 member2] | ZADD myzset 1 "one" |
ZREM | 移除有序集合中的一个或多个成员 | ZREM key member1 [member2] | ZREM myzset "one" |
ZSCORE | 返回有序集合中,成员的分数值 | ZSCORE key member | ZSCORE myzset "one" |
ZRANGE | 按索引区间返回有序集合成指定区间内的成员 | ZRANGE key start stop [WITHSCORES] | ZRANGE myzset 0 -1 WITHSCORES |
ZREVRANGE | 按索引区间返回有序集合中指定区间内的成员,按分数从高到低排序 | ZREVRANGE key start stop [WITHSCORES] | ZREVRANGE myzset 0 -1 WITHSCORES |
ZRANGEBYSCORE | 返回有序集合中指定分数区间内的成员 | ZRANGEBYSCORE key min max [WITHSCORES] | ZRANGEBYSCORE myzset 1 2 WITHSCORES |
ZREVRANGEBYSCORE | 返回有序集合中指定分数区间内的成员,按分数从高到低排序 | ZREVRANGEBYSCORE key max min [WITHSCORES] | ZREVRANGEBYSCORE myzset 2 1 WITHSCORES |
ZRANK | 返回有序集合中指定成员的排名(按分数从低到高排序) | ZRANK key member | ZRANK myzset "one" |
ZREVRANK | 返回有序集合中指定成员的排名(按分数从高到低排序) | ZREVRANK key member | ZREVRANK myzset "one" |
ZINCRBY | 有序集合中对指定成员的分数加上增量 | ZINCRBY key increment member | ZINCRBY myzset 2 "one" |
ZCARD | 获取有序集合的成员数量 | ZCARD key | ZCARD myzset |
ZCOUNT | 获取有序集合中指定分数区间的成员数量 | ZCOUNT key min max | ZCOUNT myzset 1 2 |
ZRANGEBYLEX | 返回有序集合中指定字典区间内的成员 | ZRANGEBYLEX key min max [LIMIT offset count] | ZRANGEBYLEX myzset [a [z |
ZREMRANGEBYRANK | 移除有序集合中指定排名区间内的成员 | ZREMRANGEBYRANK key start stop | ZREMRANGEBYRANK myzset 0 1 |
ZREMRANGEBYSCORE | 移除有序集合中指定分数区间内的成员 | ZREMRANGEBYSCORE key min max | ZREMRANGEBYSCORE myzset 1 2 |
ZREMRANGEBYLEX | 移除有序集合中指定字典区间内的成员 | ZREMRANGEBYLEX key min max | ZREMRANGEBYLEX myzset [a [z |
ZSCAN | 迭代有序集合中的元素(包括元素成员和元素分数) | ZSCAN key cursor [MATCH pattern] [COUNT count] | ZSCAN myzset 0 MATCH one* COUNT 10 |
6、通用命令总结
命令 | 描述 | 示例 | 具体使用示例 |
---|---|---|---|
DEL | 删除一个或多个键 | DEL key1 [key2] | DEL mykey |
EXISTS | 检查键是否存在 | EXISTS key | EXISTS mykey |
EXPIRE | 为键设置过期时间(以秒为单位) | EXPIRE key seconds | EXPIRE mykey 10 |
TTL | 获取键的剩余过期时间(以秒为单位) | TTL key | TTL mykey |
PERSIST | 移除键的过期时间,使其成为持久键 | PERSIST key | PERSIST mykey |
TYPE | 返回键的存储类型 | TYPE key | TYPE mykey |
KEYS | 查找与给定模式匹配的所有键 | KEYS pattern | KEYS user:* |
RENAME | 修改键的名称 | RENAME key newkey | RENAME mykey newkey |
RANDOMKEY | 返回一个随机键 | RANDOMKEY | RANDOMKEY |
MOVE | 将键移动到指定的数据库 | MOVE key db | MOVE mykey 1 |
DBSIZE | 返回当前数据库的键数量 | DBSIZE | DBSIZE |
FLUSHDB | 删除当前数据库中的所有键 | FLUSHDB | FLUSHDB |
FLUSHALL | 删除所有数据库中的所有键 | FLUSHALL | FLUSHALL |
SCAN | 迭代当前数据库中的键 | SCAN cursor [MATCH pattern] [COUNT count] | SCAN 0 MATCH user:* COUNT 10 |