(一)简介
Redis 命令用于在 redis 服务上执行操作。
要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。Redis 客户端的基本语法为:redis-cli
|
1
2
3
4
|
[root@localhost ~]
# /usr/local/redis-3.2.9/src/redis-cli
127.0.0.1:6379>
ping
PONG
127.0.0.1:6379>
|
远程登录为:
|
1
2
3
4
|
[root@localhost ~]
# /usr/local/redis-3.2.9/src/redis-cli -h 127.0.0.1 -p 6379 -a "redis123456"
127.0.0.1:6379>
ping
PONG
127.0.0.1:6379>
|
(二)命令的详解
(1)Redis键(key)。redis键命令用于管理redis的键
语法:127.0.0.1:6379> COMMAND KEY_NAME
实例如下:
|
1
2
3
4
5
6
7
8
|
127.0.0.1:6379>
set
foo redis
OK
127.0.0.1:6379> get foo
"redis"
127.0.0.1:6379> del foo
(integer) 1
127.0.0.1:6379> get foo
(nil)
|
在上边的实例中set 是一个命令,foo是一个键,get foo是获取这个键,del foo是删除这个键,如果删除成功后会输出 (integer) 1,否则将输出 (integer) 0
下表给出了与redis键相关的基本命令:
| 编号 | 命令 | 描述 |
|---|---|---|
| 1 | DEL key | 此命令删除一个指定键(如果存在)。 |
| 2 | DUMP key | 此命令返回存储在指定键的值的序列化版本。 |
| 3 | EXISTS key | 此命令检查键是否存在。 |
| 4 | EXPIRE key seconds | 设置键在指定时间秒数之后到期/过期。 |
| 5 | EXPIREAT key timestamp | 设置在指定时间戳之后键到期/过期。这里的时间是Unix时间戳格式。 |
| 6 | PEXPIRE key milliseconds | 设置键的到期时间(以毫秒为单位)。 |
| 7 | PEXPIREAT key milliseconds-timestamp | 以Unix时间戳形式来设置键的到期时间(以毫秒为单位)。 |
| 8 | KEYS pattern | 查找与指定模式匹配的所有键。 |
| 9 | MOVE key db | 将键移动到另一个数据库。 |
| 10 | PERSIST key | 删除指定键的过期时间,得永生。 |
| 11 | PTTL key | 获取键的剩余到期时间。 |
| 12 | RANDOMKEY | 从Redis返回一个随机的键。 |
| 13 | RENAME key newkey | 更改键的名称。 |
| 14 | PTTL key | 获取键到期的剩余时间(以毫秒为单位)。 |
| 15 | RENAMENX key newkey | 如果新键不存在,重命名键。 |
| 16 | TYPE key | 返回存储在键中的值的数据类型。 |
(2)redis字符串(string)。redis字符串数据类型的相关命令是用于管理redis字符串值。语法:
redis 127.0.0.1:6379> COMMAND KEY_NAME
实例:
|
1
2
3
4
|
127.0.0.1:6379>
set
country china
OK
127.0.0.1:6379> get country
"china"
|
在上边的例子中,set和get是redis中的命令,而country是键的名称。下表列出了redis中管理字符串的基本命令:
| 编号 | 命令 | 描述说明 |
|---|---|---|
| 1 | SET key value | 此命令设置指定键的值。 |
| 2 | GET key | 获取指定键的值。 |
| 3 | GETRANGE key start end | 获取存储在键上的字符串的子字符串。 |
| 4 | GETSET key value | 设置键的字符串值并返回其旧值。 |
| 5 | GETBIT key offset | 返回在键处存储的字符串值中偏移处的位值。 |
| 6 | MGET key1 [key2..] | 获取所有给定键的值 |
| 7 | SETBIT key offset value | 存储在键上的字符串值中设置或清除偏移处的位 |
| 8 | SETEX key seconds value | 使用键和到期时间来设置值 |
| 9 | SETNX key value | 设置键的值,仅当键不存在时 |
| 10 | SETRANGE key offset value | 在指定偏移处开始的键处覆盖字符串的一部分 |
| 11 | STRLEN key | 获取存储在键中的值的长度 |
| 12 | MSET key value [key value …] | 为多个键分别设置它们的值 |
| 13 | MSETNX key value [key value …] | 为多个键分别设置它们的值,仅当键不存在时 |
| 14 | PSETEX key milliseconds value | 设置键的值和到期时间(以毫秒为单位) |
| 15 | INCR key | 将键的整数值增加1 |
| 16 | INCRBY key increment | 将键的整数值按给定的数值增加 |
| 17 | INCRBYFLOAT key increment | 将键的浮点值按给定的数值增加 |
| 18 | DECR key | 将键的整数值减1 |
| 19 | DECRBY key decrement | 按给定数值减少键的整数值 |
| 20 | APPEND key value | 将指定值附加到键 |
(3)Redis 哈希(Hash)。Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
127.0.0.1:6379> HMSET myhash
id
"1"
name
"arvin"
sex
"man"
address
"china"
OK
127.0.0.1:6379> hgetall myhash
1)
"id"
2)
"1"
3)
"name"
4)
"arvin"
5)
"sex"
6)
"man"
7)
"address"
8)
"china"
127.0.0.1:6379> hkeys myhash
1)
"id"
2)
"name"
3)
"sex"
4)
"address"
127.0.0.1:6379> hvals myhash
1)
"1"
2)
"arvin"
3)
"man"
4)
"china"
|
在上面的例子中设置了redis的一些描述信息(id,name sex address)到哈希表myhash中。
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | HDEL key field2 [field2] | 删除一个或多个哈希字段。 |
| 2 | HEXISTS key field | 判断是否存在散列字段。 |
| 3 | HGET key field | 获取存储在指定键的哈希字段的值。 |
| 4 | HGETALL key | 获取存储在指定键的哈希中的所有字段和值 |
| 5 | HINCRBY key field increment | 将哈希字段的整数值按给定数字增加 |
| 6 | HINCRBYFLOAT key field increment | 将哈希字段的浮点值按给定数值增加 |
| 7 | HKEYS key | 获取哈希中的所有字段 |
| 8 | HLEN key | 获取散列中的字段数量 |
| 9 | HMGET key field1 [field2] | 获取所有给定哈希字段的值 |
| 10 | HMSET key field1 value1 [field2 value2 ] | 为多个哈希字段分别设置它们的值 |
| 11 | HSET key field value | 设置散列字段的字符串值 |
| 12 | HSETNX key field value | 仅当字段不存在时,才设置散列字段的值 |
| 13 | HVALS key | 获取哈希中的所有值 |
(4)redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
127.0.0.1:6379> LPUSH database mysql
(integer) 1
127.0.0.1:6379> LPUSH database oracle
(integer) 2
127.0.0.1:6379> LPUSH database sql server
(integer) 4
127.0.0.1:6379> LPUSH database db2
(integer) 5
127.0.0.1:6379> lrange database 0 4
1)
"db2"
2)
"server"
3)
"sql"
4)
"oracle"
5)
"mysql"
|
已上列子通过LPUSH将四个值插入到名称为database的redis列表中。列表常用的基本命令:
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | BLPOP key1 [key2 ] timeout | 删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用 |
| 2 | BRPOP key1 [key2 ] timeout | 删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用 |
| 3 | BRPOPLPUSH source destination timeout | 从列表中弹出值,将其推送到另一个列表并返回它; 或阻塞,直到一个可用 |
| 4 | LINDEX key index | 通过其索引从列表获取元素 |
| 5 | LINSERT key BEFORE/AFTER pivot value | 在列表中的另一个元素之前或之后插入元素 |
| 6 | LLEN key | 获取列表的长度 |
| 7 | LPOP key | 删除并获取列表中的第一个元素 |
| 8 | LPUSH key value1 [value2] | 将一个或多个值添加到列表 |
| 9 | LPUSHX key value | 仅当列表存在时,才向列表添加值 |
| 10 | LRANGE key start stop | 从列表中获取一系列元素 |
| 11 | LREM key count value | 从列表中删除元素 |
| 12 | LSET key index value | 通过索引在列表中设置元素的值 |
| 13 | LTRIM key start stop | 修剪列表的指定范围 |
| 14 | RPOP key | 删除并获取列表中的最后一个元素 |
| 15 | RPOPLPUSH source destination | 删除列表中的最后一个元素,将其附加到另一个列表并返回 |
| 16 | RPUSH key value1 [value2] | 将一个或多个值附加到列表 |
| 17 | RPUSHX key value | 仅当列表存在时才将值附加到列表 |
(5)Redis集合set。Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
127.0.0.1:6379> SADD myset
"redis"
(integer) 1
127.0.0.1:6379> SADD myset
"mysql"
(integer) 1
127.0.0.1:6379> SADD myset
"mongodb"
(integer) 1
127.0.0.1:6379> SADD myset
"mysql"
(integer) 0
127.0.0.1:6379> SMEMBERS MYSET
(empty list or
set
)
127.0.0.1:6379> SMEMBERS myset
1)
"mongodb"
2)
"mysql"
3)
"redis"
|
以上示例通过sadd将三个值插入到myset的redis集合中。
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | SADD key member1 [member2] | 将一个或多个成员添加到集合 |
| 2 | SCARD key | 获取集合中的成员数 |
| 3 | SDIFF key1 [key2] | 减去多个集合 |
| 4 | SDIFFSTORE destination key1 [key2] | 减去多个集并将结果集存储在键中 |
| 5 | SINTER key1 [key2] | 相交多个集合 |
| 6 | SINTERSTORE destination key1 [key2] | 交叉多个集合并将结果集存储在键中 |
| 7 | SISMEMBER key member | 判断确定给定值是否是集合的成员 |
| 8 | SMOVE source destination member | 将成员从一个集合移动到另一个集合 |
| 9 | SPOP key | 从集合中删除并返回随机成员 |
| 10 | SRANDMEMBER key [count] | 从集合中获取一个或多个随机成员 |
| 11 | SREM key member1 [member2] | 从集合中删除一个或多个成员 |
| 12 | SUNION key1 [key2] | 添加多个集合 |
| 13 | SUNIONSTORE destination key1 [key2] | 添加多个集并将结果集存储在键中 |
| 14 | SSCAN key cursor [MATCH pattern] [COUNT count] | 递增地迭代集合中的元素 |
(6)Redis有序集合(sorted set)和集合一样也是string字符型元素的集合,且不允许有重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1934927