哪些网站可以接兼职做网页模板网站都有什么作用
Redis 作为高性能的键值存储数据库,提供了丰富的命令集,主要涵盖 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo(地理位置)、HyperLogLog(基数统计)、Bitmap(位图)、BitField(位操作)、Scan(迭代查询)操作。
下面按照类别分类总结 Redis 的常用命令及其使用方式。
基本操作
1. Key(键)操作
| 命令 | 作用 |
|---|---|
EXISTS key | 检查 key 是否存在 |
DEL key [key ...] | 删除一个或多个 key |
EXPIRE key seconds | 设置 key 的过期时间 |
TTL key | 查看 key 剩余的生存时间 |
RENAME key newkey | 修改 key 的名称 |
TYPE key | 获取 key 对应的 value 类型 |
KEYS pattern | 查找符合 pattern 规则的 key |
示例
SET name "redis"
EXPIRE name 10
TTL name
DEL name
2. 字符串 (String)
| 命令 | 说明 |
|---|---|
| SET key value | 设置指定 key 的值 |
| GET key | 获取指定 key 的值 |
| GETSET key value | 设置新值并返回旧值 |
| MGET key [key ...] | 同时获取多个 key 的值 |
| MSET key value [key value ...] | 同时设置多个 key 的值 |
| MSETNX key value [key value ...] | 同时设置多个 key 的值(当所有 key 都不存在时才执行) |
| SETNX key value | 当 key 不存在时,设置 key 的值 |
| SETEX key seconds value | 设置 key 的值,并指定过期时间(秒) |
| PSETEX key milliseconds value | 设置 key 的值,并指定过期时间(毫秒) |
| STRLEN key | 返回 key 中字符串值的长度 |
| APPEND key value | 追加 value 到 key 原有值的末尾 |
| GETRANGE key start end | 获取字符串指定区间内的子字符串(旧别名:SUBSTR) |
| SETRANGE key offset value | 从指定偏移量开始,覆盖写入字符串 |
| INCR key | 将 key 中存储的数字加 1 |
| INCRBY key increment | 将 key 中存储的数字加上指定增量 |
| INCRBYFLOAT key increment | 将 key 中存储的浮点数加上指定增量 |
| DECR key | 将 key 中存储的数字减 1 |
| DECRBY key decrement | 将 key 中存储的数字减去指定减量 |
| GETBIT key offset | 返回字符串中指定偏移量处的位值 |
| SETBIT key offset value | 将字符串中指定偏移量处的位设置为 0 或 1 |
| BITCOUNT key [start end] | 统计字符串中值为 1 的位数 |
| BITOP operation destkey key [key ...] | 对一个或多个 key 进行位操作(AND、OR、XOR、NOT) |
| BITPOS key bit [start] [end] | 查找字符串中第一个指定二进制位的位置 |
示例
SET username "Tom"
GET username
INCR count
DECR count
APPEND username " Smith"
STRLEN username
3. 哈希 (Hash)
| 命令 | 说明 |
|---|---|
| HSET key field value | 为哈希表中的字段赋值 |
| HSETNX key field value | 仅当字段不存在时,为哈希表中的字段赋值 |
| HMSET key field value [field value ...] | 同时为多个字段赋值(新版 Redis 建议使用 HSET 多参数形式) |
| HGET key field | 获取哈希表中指定字段的值 |
| HMGET key field [field ...] | 获取哈希表中多个字段的值 |
| HDEL key field [field ...] | 删除哈希表中一个或多个字段 |
| HEXISTS key field | 检查哈希表中是否存在指定字段 |
| HLEN key | 返回哈希表中字段的数量 |
| HKEYS key | 返回哈希表中所有的字段名称 |
| HVALS key | 返回哈希表中所有字段对应的值 |
| HGETALL key | 返回哈希表中所有的字段和值 |
| HINCRBY key field increment | 将哈希表中指定字段的整数值增加指定数值 |
| HINCRBYFLOAT key field increment | 将哈希表中指定字段的浮点数值增加指定数值 |
| HSTRLEN key field | 返回哈希表中指定字段对应的值的字符串长度 |
示例
HSET user:1001 name "Alice"
HGET user:1001 name
HGETALL user:1001
HDEL user:1001 name
4. 列表 (List)
| 命令 | 说明 |
|---|---|
| LPUSH key value [value ...] | 将一个或多个值插入到列表的头部 |
| RPUSH key value [value ...] | 将一个或多个值插入到列表的尾部 |
| LPOP key | 移除并返回列表的第一个元素 |
| RPOP key | 移除并返回列表的最后一个元素 |
| LINDEX key index | 通过索引获取列表中的元素(索引从 0 开始,负数表示从尾部开始) |
| LLEN key | 获取列表的长度 |
| LRANGE key start stop | 获取列表中指定区间内的元素 |
| **LINSERT key BEFORE | AFTER pivot value** |
| LSET key index value | 对列表中指定索引位置的元素进行赋值 |
| LREM key count value | 根据参数 count 的值,移除列表中与 value 相等的元素 |
| LTRIM key start stop | 对列表进行修剪,只保留指定区间内的元素 |
| RPOPLPUSH source destination | 移除 source 列表的最后一个元素,并将其添加到 destination 列表的头部,同时返回该元素 |
| BLPOP key [key ...] timeout | 阻塞式地移除并返回列表的第一个元素(可同时阻塞多个列表) |
| BRPOP key [key ...] timeout | 阻塞式地移除并返回列表的最后一个元素 |
| BRPOPLPUSH source destination timeout | 阻塞式地执行 RPOPLPUSH 操作 |
| LPUSHX key value | 当列表存在时,将值插入到列表头部 |
| RPUSHX key value | 当列表存在时,将值插入到列表尾部 |
示例
LPUSH queue "task1"
RPUSH queue "task2"
LPOP queue
LRANGE queue 0 -1
5. 集合 (Set)
| 命令 | 说明 |
|---|---|
| SADD key member [member ...] | 向集合中添加一个或多个成员 |
| SREM key member [member ...] | 移除集合中的一个或多个成员 |
| SMEMBERS key | 返回集合中的所有成员 |
| SISMEMBER key member | 判断指定元素是否集合的成员 |
| SCARD key | 获取集合中成员的数量 |
| SINTER key [key ...] | 返回给定所有集合的交集 |
| SINTERSTORE destination key [key ...] | 计算给定集合的交集,并将结果存储在 destination 中 |
| SUNION key [key ...] | 返回给定所有集合的并集 |
| SUNIONSTORE destination key [key ...] | 计算给定集合的并集,并将结果存储在 destination 中 |
| SDIFF key [key ...] | 返回给定集合之间的差集 |
| SDIFFSTORE destination key [key ...] | 计算差集并将结果存储在 destination 中 |
| SRANDMEMBER key [count] | 返回集合中一个或多个随机成员 |
| SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素(适合处理大集合时分批遍历) |
示例
SADD users "Tom" "Jerry"
SMEMBERS users
SISMEMBER users "Tom"
SREM users "Jerry"
SCARD users
6. 有序集合 (Sorted Set / ZSet)
| 命令 | 说明 |
|---|---|
| ZADD key [NX|XX] [CH] [INCR] score member [score member ...] | |
| ZREM key member [member ...] | 移除有序集合中的一个或多个成员 |
| ZINCRBY key increment member | 为有序集合中的成员的分数加上指定值 |
| ZRANGE key start stop [WITHSCORES] | 返回有序集合中指定区间内的成员(按分数从低到高排序) |
| ZREVRANGE key start stop [WITHSCORES] | 返回有序集合中指定区间内的成员(按分数从高到低排序) |
| ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回有序集合中分数在指定范围内的成员 |
| ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] | 返回有序集合中分数在指定范围内的成员(从高到低排序) |
| ZRANK key member | 返回成员在有序集合中的排名(从 0 开始,按分数从低到高排序) |
| ZREVRANK key member | 返回成员在有序集合中的排名(从 0 开始,按分数从高到低排序) |
| ZSCORE key member | 返回有序集合中成员的分数 |
| ZCARD key | 获取有序集合中的成员数量 |
| ZCOUNT key min max | 统计分数在指定范围内的成员数量 |
| ZLEXCOUNT key min max | 统计字典序在指定范围内的成员数量(仅适用于分数相同的成员) |
| ZRANGEBYLEX key min max [LIMIT offset count] | 返回有序集合中成员的字典序范围内的元素 |
| ZREVRANGEBYLEX key max min [LIMIT offset count] | 返回有序集合中成员的字典序范围内的元素(逆序) |
| ZPOPMIN key [count] | 移除并返回有序集合中分数最小的成员 |
| ZPOPMAX key [count] | 移除并返回有序集合中分数最大的成员 |
| ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MAX | MIN] | 多个有序集合求并集 |
| ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MAX | MIN] | 多个有序集合求交集 |
| ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素 |
| ZMSCORE key member [member ...] | 获取有序集合中多个成员的分数(Redis 6.2 及以上支持) |
示例
ZADD ranking 100 "Alice"
ZADD ranking 200 "Bob"
ZRANGE ranking 0 -1 WITHSCORES
ZREM ranking "Alice"
7. 其他操作
| 命令 | 作用 |
|---|---|
FLUSHDB | 清空当前数据库 |
FLUSHALL | 清空所有数据库 |
INFO | 获取服务器统计信息 |
PING | 测试连接 |
特定使用场景操作
1. Geo(地理位置存储与计算)
Redis 的 Geo 用于存储地理位置(经纬度)并提供距离计算、范围查询等功能。
| 命令 | 作用 |
|---|---|
GEOADD key longitude latitude member [longitude latitude member ...] | 添加地理位置信息 |
GEODIST key member1 member2 [unit] | 计算两个位置之间的距离(支持单位:m、km、mi、ft) |
GEOPOS key member [member ...] | 获取指定位置的经纬度 |
| `GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC]` | |
| `GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC]` | |
GEOHASH key member [member ...] | 获取成员的 GeoHash 值 |
示例
GEOADD cities 116.40 39.90 "Beijing"
GEOADD cities 121.47 31.23 "Shanghai"
GEODIST cities "Beijing" "Shanghai" km
GEORADIUS cities 116.40 39.90 100 km WITHDIST
2. HyperLogLog(基数统计)
Redis HyperLogLog 是用于 近似统计不重复元素数量 的数据结构,占用内存固定(12 KB),适用于大规模数据去重计数。
| 命令 | 作用 |
|---|---|
PFADD key element [element ...] | 添加元素到 HyperLogLog |
PFCOUNT key [key ...] | 获取去重后的元素数量估算值 |
PFMERGE destkey sourcekey [sourcekey ...] | 合并多个 HyperLogLog |
示例
PFADD users "user1" "user2" "user3"
PFCOUNT users
PFMERGE total_users users1 users2
适用场景:统计 网站UV、活跃用户数、访问IP数 等。
3. Bitmap(位图)
Bitmap 是 二进制位存储 结构,适用于存储 用户签到、活跃状态、权限控制 等场景。
| 命令 | 作用 |
|---|---|
SETBIT key offset value | 设置某个位的值(1 或 0) |
GETBIT key offset | 获取某个位的值 |
BITCOUNT key [start end] | 统计 key 中值为 1 的位个数 |
BITOP operation destkey key [key ...] | 按位操作(AND、OR、XOR、NOT) |
示例
SETBIT sign:20240301 1 1 # 用户ID=1签到
SETBIT sign:20240301 2 1 # 用户ID=2签到
GETBIT sign:20240301 1 # 查询用户ID=1是否签到
BITCOUNT sign:20240301 # 统计今日签到人数
适用场景:用户签到、状态标记、权限控制、唯一性判断。
4. BitField(高级位操作)
BitField 用于操作多个二进制位 (支持批量读写),适用于 计数器、标记存储、状态管理。
| 命令 | 作用 |
|---|---|
BITFIELD key GET type offset | 读取某个位置的值 |
BITFIELD key SET type offset value | 设置某个位范围的值 |
BITFIELD key INCRBY type offset increment | 对某个位范围的值进行增减 |
示例
BITFIELD user_data SET u8 0 100 # 把偏移量0的8位数值设为100
BITFIELD user_data INCRBY u8 0 5 # 偏移量0的8位数值加5
BITFIELD user_data GET u8 0 # 获取偏移量0的8位值
适用场景:用户计数、状态标记、存储紧凑数据。
5. Scan(游标迭代查询)
SCAN 命令用于 大规模数据迭代查询,可以分批遍历 key、集合、哈希、ZSet。
| 命令 | 作用 |
|---|---|
SCAN cursor [MATCH pattern] [COUNT count] | 迭代 key |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 hash |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 set |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 zset |
示例
SCAN 0 MATCH user:* COUNT 10
HSCAN user:1001 0 MATCH name COUNT 5
适用场景:海量数据分页查询,防止 KEYS 阻塞 Redis。
