1、redis的基本命令
序列 | 命令 | 举例 | 描述 |
---|---|---|---|
1 | set key values | set key value | 设置键和值 |
mset key1 value1 key2 value2 | 设置多个键和值 | ||
2 | keys patten | keys * | 获得符合规则的键名列表 |
get key | 获得对应键值 | ||
mget key1 key2 …… | 获得多个对应键值 | ||
3 | exists key | exists key | 判断一个键是否存在 |
4 | rename key new_key | rename key new_key | 对键名重命名 |
5 | expire key seconds | set bar abc expire bar 2000 | 设置过期时间 |
set key value key seconds | set bar 123 ex 2000 | ||
setex key seconds value | setex bar 2000 123 | ||
6 | persist key | persist bar | 设置永不过期 |
7 | TTL key | TTL bar | 查看剩余时间 |
8 | type key | set foo 1 type foo | 查看数据类型 |
9 | flushall | flushall | 清楚一个redis实例中的所有数据库 |
2、redis的基本数据类型
2.1、字符串(String)
序列 | 命令 | 描述 |
---|---|---|
1 | set key value | 设置指定key的值 |
2 | get key | 获取指定key的值 |
3 | meget key1 key2 …… keyn | 获取多个key值 |
4 | setnx key value | 只有在key不存在的时候才会设置key的值 |
5 | strlen key | 返回key值的字符串长度 |
6 | incr key | key值的自增 (原子操作) |
7 | decr key | key值的自减 (原子操作) |
8 | incrby key increment | 数字值增加num |
9 | decrby key increment | 数字值减少num |
10 | del key [key ...] | 删除键 |
11 | mset key value [key value ...] | 批量添加 |
12 | incrbyfloat key increment | 浮点数字增加 |
13 | append key value | 字符拼接(添加) |
14 | setrange key offset value | 设置指定位置的字符 |
15 | getrange key start value | 获取部分字符串 |
2.2、列表(list)
序列 | 命令 | 描述 |
---|---|---|
1 | lpush key value1 value2 value3 | 左边添加 value1 value2 value3 |
2 | rpush key value1 value2 value3 | 右边添加 value1 value2 value3 |
3 | lpop key | 从左边删除元素 |
4 | rpop key | 从右边删除元素 |
5 | llen key | 获取长度 |
6 | lrem key count value |
当
count
>0
时
LREM
命令会从列表左边开始删除前
count
个值为
value
的元素
|
当count<0时LREM命令会从列表右边开始删除前|count|个值为value的元素 | ||
当count=0是LREM命令会删除所有值为value的元素 | ||
7 | lindex key index | 获取key值指定位置的数据 |
8 | lrange key min max | 截取判断,当max为-1时表示截取到最后一个 |
2.3 集合(set)
序列 | 命令 | 描述 |
---|---|---|
1 | sadd key member [member ……] | 增加元素 |
2 | srem key member [member ……] | 删除指定元素 |
3 | spop key [count] | 随机删除count个元素 |
4 | sismember key member | 判断元素是否存在 |
5 | smembers key | 获取所有元素 |
6 | scard key | 获取集合元素个数 |
7 | srandomember key [count] | 获取count个数 count>0时返回count不重复的数 count<0时,可能出现重复的数 |
8 | sinter key1 key2 | 求key1 key2的交集 |
sinterstore destination key1 key2 | ||
将key1 key2的交集保存到 destination中 | ||
9 | sunion key1 key2 | 求key1 key2的并集 |
sunionstore destination key1 key2 | ||
将key1 key2的并集保存到 destination中 | ||
10 | sinter key1 key2 | 求key1 key2的差集 |
sinterstore destination key1 key2 | ||
将key1 key2的差集保存到 destination中 |
2.4 有序集合(zset)
在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是它们的分数却可以相同。
zset的特点和与set的差别:
(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。
(2)有序集合类型是使用散列表和跳跃表(Skiplist)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
(3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
(4)有序集合要比列表类型更耗费内存。有序集合类型算得上是Redis的5种数据类型中最高级的类型了,在学习时可以与列表类型和集合类型对照理解。
序列 | 命令 | 描述 |
---|---|---|
1 | zadd key score1 member1 [score2 member2 ……] | 增加元素 |
2 | zrem key member | 删除指定元素 |
3 | zcard key | 查看元素个数 |
4 | zscore key member | 获取元素分数 |
5 | zrange key start stop [withscores] | 从小到大打印 加上[withscore]会同时打印分数 |
6 | zrangebyscore key min max [withscores] [limit offset count] | 按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max) LIMIT 向后偏移offset个元素,并且只获取前count个元素 |
7 | zcount key score_min score_max | 获取指定分数范围的元素个数 |
8 | zincrby key increment member | increment是增加的分数,分数可以是负数 |
9 | zremrangebyrank key start stop | 按照排名范围删除元素 |
10 | zremrangebyscore key min max | 按照分数范围删除元素 |
11 | zinterstore destination numkeys key [key…][WEIGHTS weight[weight…]] [AGGREGATE SUM|MIN|MAX] | 计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),返回值为destination键中的元素个数。destination键中元素的分数是由AGGREGATE参数决定的,默认是SUM,numkeys 代表的是进行交集的集合数量 |
2.5 哈希类型(hash)
散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多232−1个字段。
序列 | 命令 | 描述 |
---|---|---|
1 | hset key field value [hield value] | 添加数据(添加多个(或1个)) |
2 | hget key heild field [field] | 获取数据(获取多个) |
3 | hkeys key | 获取所有fields |
4 | hvals key | 获取所有values |
5 | hgetall key | 获取所有key和value |
6 | hlen key | 获取field个数 |
7 | hstrlen key field | 计算value的字符串长度 |
8 | hexists key field | 判断字段是否存在 |
9 | hsetnx key field value | 不存在则添加,存在则什么都不做 |
10 | hincrby key field increment | 数字值做加法(可以是负数) |
11 | hincrbyfloat key field increment | 浮点数字值做加法(可以是负数) |
12 | hdel key field [field……] | 删除一个或多个字段 |