Redis 系列教程(二)常用命令
Redis 是一个 key-value 的数据库,每条数据都是一个键值对,键的类型是字符串且不能重复
Redis 的值支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
参考文档:https://redis.io/commands
一、keys 通用命令
适用于五种类型的 value
命令 | 说明 |
---|---|
keys * | 查看所有键 |
keys pattern | 查找键,参数支持正则表达式 |
exists key | 判断 key 是否存在,存在返回1,不存在返回0 |
type key | 查看 key 对应的 value 类型 |
del key1 key2 ... | 删除键及对应的值 |
expire key seconds | 设置 key 的过期时间为 seconds 秒,若未设置则一直存在直到使用 del 删除 |
ttl key | 查看 key 的过期时间,返回结果以秒为单位2. 数据类型 |
二、数据类型
1. String 字符串
String 是 redis 最基本的数据类型,它是二进制安全的,可以包含任何类型的数据,如jpg图像数据等。在redis中字符串类型的value最多可容纳512M。常用字符串命令:
命令 | 说明 |
---|---|
set key value | 设置指定 key 的值,key 不存在为添加,key 存在则为修改 |
get key | 获取指定 key 的值,不存在则返回 nil |
setex key seconds value | 设置指定 key 的值,并设置 key 的过期时间为 seconds 秒 |
psetex key milliseconds value | 同上,以毫秒为单位 |
mset key1 value1 key2 value2 ... | 同时设置多个key-value对 |
mget key1 key2 key3 ... | 获取所有指定 key 的值 |
append key value | 追加 value 到原来的值的末尾(要求 key 已存在且值为字符串) |
getrange key start end | 返回 key 中字符串值的子串,例:set test "This is a test key" getrange test 0 3 (返回 This) |
getset key value | 将指定 key 的值设置为 value,并返回该 key 的旧值 |
setnx key value | 只有在 key 不存在时设置 key 的值 |
strlen key | 返回 key 所存储的字符串的长度 |
msetnx key1 value1 key2 value2 ... | 同时设置多个key-value对(仅当所有key都不存在时) |
incr key | 将 key 中储存的数字值增一 |
decr key | 将 key 中储存的数字值减一 |
decrby key decrement | 将 key 所储存的值减去给定的减量值 |
2. Hash(哈希)
Redis hash 是一个 string 类型的 field 和 value 的映射表,适合用于存储对象。每个 hash 可以存储 232-1 键值对(40多亿)。
命令 | 说明 |
---|---|
hset key field value | 将哈希表 key 中的字段 field 的值设置为 value,field 存在则覆盖,不存在则新增 |
hmset key field1 value1 field2 value2... | 同时将多个field-value对设置到哈希表key中 |
hget key field | 获取存储在哈希表中指定字段的值 |
hmget key field1 field2 ... | 获取所有给定字段的值 |
hkeys key | 获取哈希表 key 中的所有字段 |
hvals key | 获取哈希表 key 中所有值 |
hexists key field | 查看哈希表中指定 key 的 field 字段是否存在 |
hgetall key | 获取在哈希表中指定key的所有字段和值 |
hdel key field1 field2 ... | 删除一个或多个哈希表字段 |
hlen key | 获取哈希表中字段的数量 |
hsetnx key field value | 字段field不存在时,设置哈希表字段的值 |
hscan key cursor | 迭代哈希表中的键值对 |
3. List(列表)
Redis 列表的元素类型是字符串,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
命令 | 说明 |
---|---|
lpush key value1 value2 ... | 将一个或多个值插入到列表 key 的左侧 |
llen key | 获取列表长度 |
rpush key value1 value2 ... | 将一个或多个值插入到列表右侧 |
linsert key before | left pivot value |
lrange key start stop | 获取列表指定范围内的元素,lrange key 0 -1 获取列表所有元素 |
lindex key index | 通过索引获取列表中的元素 |
lset key index value | 通过指定索引位置的元素值,索引-1表示最后一个 |
lrem key count value | 删除指定元素,count表示移除几次,大于0从头开始移除,小于0从后往前移除,等于0表示移除所有 |
lpop key | 移出并获取列表的第一个元素 |
rpop key | 移除列表的最后一个元素,返回值为移除的元素。 |
blpop key1 key2 ... timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
brpop key1 key2 ... timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
brpoplpush source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
lpushhx key value | 将一个值插入到已存在的列表头部 |
lrem key count value | 移除列表元素 |
ltrim key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 |
rpoppush source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
ppushhx key value | 为已存在的列表添加值值 |
4. Set(集合)
Redis 的 Set 是 string 类型的无序集合,不可重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1(4294967295,,每个集合可存储40多亿个成员)。
命令 | 说明 |
---|---|
sadd key member1 member2... | 向集合添加一个或多个成员 |
smembers key | 返回集合中的所有成员 |
srem key member1 member2... | 移除集合中一个或多个成员 |
scard key | 获取集合的成员数 |
sdiff key1 key2... | 返回第一个集合与其他集合之间的差异。 |
spop key | 移除并返回集合中的一个随机元素 |
5. zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,不允许重复。它的每个元素都会关联一个double类型的score权重。redis正是通过权重来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但权重(score)可重复。
命令 | 说明 |
---|---|
zadd key score1 member1 score2 member2 | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zcard key | 获取有序集合的成员数 |
zrange key start stop [WITHSCORES] | 通过索引区间返回有序集合指定区间内的成员 |
zrangebyscore key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
zscore key member | 返回有序集中,成员的分数值 |
zrem key member1 member2 ... | 移除有序集合中的一个或多个成员 |
zremrangebyscore key min max | 移除有序集合中给定的分数区间的所有成员 |
zcount key min max | 计算在有序集合中指定区间分数的成员数 |
zrank key member | 返回有序集合中指定成员的索引 |
zrevrank key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
三、服务端命令
命令 | 说明 |
---|---|
redis-server | 启动 redis 服务 |
redis-server --help | 查看帮助 |
ping | 查看服务是否运行 |
echo message | 打印字符串 |
auth password | 验证密码是否正确 |
select index | 切换到指定的数据库 |
quit | 关闭当前链接 |
推荐使用服务的方式管理 redis 服务
sudo service redis start
sudo service redis stop
sudo service redis restart
推荐步骤:
-
ps -ef | grep redis 查看 redis 服务器进程
-
sudo kill -9 pid 杀掉redis 服务器进程
-
sudo redis-server /etc/redis/redis.conf 指定 redis 服务器加载的配置文件
四、客户端命令
要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务,默认连接到db0。
命令 | 说明 |
---|---|
redis-cli help | 查看帮助 |
redis-cli | 连接本地redis |
redis-cli -h 127.0.0.1 -p 6379 | 连接远程 redis |
ping | 测试是否连接成功 |
select 3 | 切换数据库 |
config get maxclients | 最大连接数 |
client list | 返回连接到 redis 服务的客户端列表 |
client setname name | 设置当前连接的名称 |
client getname | 获取通过 client setname 命令设置的服务名称 |
client pause milliseconds | 挂起客户端连接,指定挂起的时间以毫秒计 |
client kill | 关闭客户端连接Redis 连接 |