基本数据类型和常用命令
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

浙公网安备 33010602011771号