基本数据类型和常用命令
General
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
keys * | 模糊搜索 | keys qwe* | 搜索 qwe 打头的 |
exists key | 判断 keys 是否存在 | exists mykey |
mykey 是否存在 |
type key | 查看 key 的类型 | type mykey |
|
del key | 删除 key | del mykey |
同步删除 |
unlink key | 删除 key | unlink mykey |
异步删除 |
expire key | 设置 key 的过期时间,单位是秒 | expire mykey 10 |
设置 mykey 10 秒后过期 |
ttl key | 查看 key 还有多久过期 | ttl mykey |
-1 表示永不过期(默认) -2 表示不存在该 key |
select index | 选择数据库分片 | select 0 |
共有 16 个,默认选择的是 0 |
flushdb | 清空当前库 | ||
flushall | 清空所有库 |
String
虽然是 String,但是可以存储 String、整型、浮点型,整型和浮点型可以做自增和自减操作
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
get key | 获取 key 值 | get mykey |
|
set key value | 添加 key | set mykey val |
如果 key 不存在就添加;存在就覆盖 |
setnx key value | 当 key 不存在时添加 key | setnx mykey |
简易锁 |
setex key value | 添加 key 的同时设置过期时间,单位是秒 | setex mykey 5 |
|
incr key | key 的值 +1 | incr mykey |
整型适用 |
decr key | key 的值 -1 | 整型适用 | |
incrby key step | key 的值 + step | incrby mykey 4 |
整型适用 |
incrbyfloat key step | key 的值 + step | 浮点型适用,浮点型不能自增1,必须指定步长 |
Hash
存储对象
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
hset key field value | 给对象的属性赋值;key 不存在就创建 | hset user:101 id 1001 |
给 user:101 这个 hash 设置 id=1001 如果 user:101 不存在会创建这个 key |
hget key field | 取值 | hget user:101 id |
|
hkeys key | 获取对象所有键 | hkeys user:101 |
|
hvals key | 获取对象所有值 | hvals user:101 |
|
hgetall key | 获取对象所有键值对 | hgetall user:101 |
一行 key 一行 value 的显示,一个键值对两行 |
hexistxs key field | 是否有指定属性 | hexistxs user:101 id |
|
hsetnx key field valye | 对象中不存在某个属性才添加属性并复制 | hsetnx user:101 name zhangsan |
如果 user:101 没有 name 才添加 |
List
存储 可重复+有序 的 String 集合,底层是双向链表结构
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
lpush key v1 | 左(前)边插入,key 不存在就创建 | lpush mykey 1 2 3 |
添加后顺序为 3 2 1 |
rpush key v1 | 同上,右(后)边插入 | ||
lpop key | 弹出最左边的值,并返回 | lpop mykey |
弹出就是删除的意思 |
rpop key | 同上,弹出右边 | ||
lrange key start end | 从左至右获得指定下标范围的元素 | lrange mykey 0 4 |
不会删除,只是获取; 如果取全部就 lrange key 0 -1 |
lindex key index | 获取指定下标位置的元素 | lindex mykey 2 |
Set
存储 不可重复+无序 的 String 集合,底层数据结构是 hash 表,所以时间复杂度是 O(1)
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
sadd key v1 | key 添加一个元素;key 不存在就创建 | sadd mykey v1 |
不可重复 |
smembers key | 获取 set 所有值 | smembers mykey |
|
sismember key value | 判断 set 中是否有有某个值 | sismember mykey v1 |
1:存在;0:不存在 |
scard key | 总元素个数 | ||
smove k1 k2 value | 把 k1 中的 value 移动到 k2 中 | ||
sinter k1 k2 | 取交集 | ||
sunion k1 k2 | 取并集 | ||
sdiff k1 k2 | 取差集 | k1 中存在,k2 中不存在 |
SortedSet/Zset
存储 不可重复 + 可排序 的 String 集合,不是有序(插入顺序),是根据指定的 score 来排序,底层数据结构是跳表+hash表
命令 | 作用 | 使用 | 描述 |
---|---|---|---|
zadd key score member | 给集合添加元素;可以多个 | zadd tv_rank 100 海信 99 索尼 |
添加两个元素;海信和索尼 海信分数:100;索尼分数:99 |
zscore key member | 获取某个元素的分数 | zadd tv_rank 海信 |
获取 '海信' 的分数 |
zrank key member | 获取某个元素的排名 | ||
zcard key | 集合中的元素个数 | zcard tv_rank |
|
zcount key min max | 集合中指定分数分范围内的元素个数 | zcount tv_rank 10 80 |
分数是[10-80]之间的元素个数 |
zincrby key score member | 给元素增加指定分数 | zincrby tv_rank 15 索尼 |
给索尼增加15分 |
zrange key start end [withscores] | 先按分数排序,然后获取排序后的指定下标的元素 | zrange tv_rank 0 -1 |
获取全部元素,每个元素不带分数 |
zrangebyscore key min max [withscores] | 先确定分数范围的元素,然后再排序 | zrangebyscore tv_rank 10 100 withscores |
获取10-100内的元素,带分数 |
zrevrangebyscore key max min [withscores] | 同上,按照分数从大到小排序 | ||
zrem key member | 移除元素;可以多个 | zrem tv_rank 海信 索尼 创维 |
移除这三个元素 |
- zrange 全部元素先根据分数排序,然后根据下标取排序后的元素
- zrangebyscore 相反,是先根据分数得到范围内的元素,然后再根据分数排序
- 默认都是从大到小排序,如果要从小到大,Z 后满加 REV,比如 zrank 对应的是 zrevrank
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具