Redis 命令及数据类型 -- 通用命令
摘要
- 本文介绍 Redis 的 通用命令,即所有数据类型均可使用的命令
- 本文基于
redis-7.4.7 - Redis官网:https://redis.io/
- Redis 命令文档:https://redis.io/docs/latest/commands/
通用命令
-
针对所有数据类型均可使用给的方法和命令
| 方法功能 | 方法 redisTemplate.xxx() |
Redis 原始命令 | 命令备注 / 推荐替代 |
|---|---|---|---|
| 复制 key 到新 key | Boolean copy(K source, K target, boolean replace) |
COPY source target [REPLACE] |
Redis ≥ 6.2 |
| 判断 key 是否存在(单个) | Boolean hasKey(K key) |
EXISTS key |
CLI 返回存在数量 |
| 统计存在的 key 数量 | Long countExistingKeys(Collection<K> keys) |
EXISTS key [key ...] |
返回存在 key 的数量 |
| 删除指定 key(同步) | Boolean delete(K key) |
DEL key |
返回是否删除成功 |
| 批量删除 key(同步) | Long delete(Collection<K> keys) |
DEL key [key ...] |
返回删除数量 |
| 删除 key(异步) | Boolean unlink(K key) |
UNLINK key |
非阻塞删除 |
| 批量删除 key(异步) | Long unlink(Collection<K> keys) |
UNLINK key [key ...] |
推荐大 key 使用 |
| 获取 key 的数据类型 | DataType type(K key) |
TYPE key |
返回 string/hash/list/set/zset/none |
| 按模式匹配 key(阻塞) | Set<K> keys(K pattern) |
KEYS pattern |
生产环境不推荐 |
| 游标方式扫描 key | Cursor<K> scan(ScanOptions options) |
SCAN cursor [MATCH] [COUNT] |
推荐替代 KEYS |
| 随机返回一个 key | K randomKey() |
RANDOMKEY |
可能返回 null |
| 重命名 key | void rename(K oldKey, K newKey) |
RENAME oldKey newKey |
覆盖目标 key |
| key 不存在时重命名 | Boolean renameIfAbsent(K oldKey, K newKey) |
RENAMENX oldKey newKey |
原子操作 |
| 设置 key 过期时间 | Boolean expire(K key, long timeout, TimeUnit unit) |
PEXPIRE / EXPIRE |
优先毫秒精度 |
| 设置 key 在指定时间过期 | Boolean expireAt(K key, Date date) |
PEXPIREAT / EXPIREAT |
精度自动降级 |
| 设置过期策略(高级 API) | ExpiryChangeState expire(K key, Expiration expiration, ExpirationOptions options) |
EXPIRE / PEXPIRE / EXPIREAT |
Spring 抽象封装 |
| 清除 key 的过期时间 | Boolean persist(K key) |
PERSIST key |
变为永久 key |
| 获取剩余 TTL(秒) | Long getExpire(K key) |
TTL key |
-1 无 TTL,-2 不存在 |
| 获取剩余 TTL(指定单位) | Long getExpire(K key, TimeUnit unit) |
PTTL / TTL |
优先毫秒 |
| 将 key 移动到其他 DB | Boolean move(K key, int dbIndex) |
MOVE key db |
集群模式不可用 |
| 导出 key 的序列化值 | byte[] dump(K key) |
DUMP key |
用于迁移 |
| 恢复 key | void restore(K key, byte[] value, long ttl, TimeUnit unit, boolean replace) |
RESTORE key ttl value [REPLACE] |
与 DUMP 配合 |
| 排序并返回结果 | List<V> sort(SortQuery<K> query) |
SORT key |
阻塞操作 |
| 排序并指定返回类型 | List<T> sort(SortQuery<K> query, RedisSerializer<T> serializer) |
SORT key |
结果反序列化 |
| 排序并映射结果 | List<T> sort(SortQuery<K> query, BulkMapper<T,V> mapper) |
SORT key |
Spring 封装 |
| 排序并映射(高级) | List<T> sort(SortQuery<K> query, BulkMapper<T,S> mapper) |
SORT key |
批量映射 |
| 排序并存储结果 | Long sort(SortQuery<K> query, K storeKey) |
SORT key STORE destination |
返回结果条数 |
-
生产环境慎用的命令
| 命令 | 原因 | 推荐 |
|---|---|---|
KEYS |
阻塞、O(N) | SCAN |
SORT |
阻塞、消耗 CPU | 业务侧排序 |
DEL |
阻塞、消耗 CPU | UNLINK |