Redis 常用基本操作命令

01 全局命令

1.1 Keys命令

KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key,但是KEYS *是非常消耗内存的,容易导致Redis崩溃

172.16.255.101:6379> KEYS *
1) "k1"
2) "k4"
3) "k2"
4) "k5"

02 字符串命令

Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值。其中Redis Strings是最简单的Redis类型,如果只用这种类型,Redis就相当于一个持久化的memcache服务器(memecache的数据仅仅保存在内存中,服务器重启后,数据将丢失)

2.1 SET/GET命令

通常使用SET/GET命令来设置和获取字符串的值

SET key value 将键key设定为指定的字符串值;如果 key 已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型;当set命令执行成功之后,之前设置的过期时间都将失效

如果想同时插入多个数据,使用MSET key value [key value ...] 将对应给定的keys到他们相应的values上;同理MGET key [key ...]用于获取多个key的值

172.16.255.101:6379> set k1 v1
OK
172.16.255.101:6379> get k1
"v1"
172.16.255.101:6379> MSET k3 v3 k4 v4 k5 v5
OK
172.16.255.101:6379> MGET k3 k4 k5
1) "v3"
2) "v4"
3) "v5"

2.2 INCR命令

INCR命令用于实现Redis计数器

INCR key 将key对应存储的字符串被解析为10进制的64位有符号整型数据,并对存储在指定key的数值执行原子的加1操作;如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0

功能类似命令

  • INCRBY key increment:将key对应的数字increment
  • DECR key:对key对应的数字做减1操作
  • DECRBY key decrement:将key对应的数字decrement
172.16.255.101:6379> set k2 100
OK
172.16.255.101:6379> INCR k2
(integer) 101
172.16.255.101:6379> get k2
"101"

2.3 EXISTS命令

EXISTS key [key ...] 返回对应key是否存在,返回1或0表示对应key的值是否存在;相对的可以使用DEL命令删除key
DEL key [key ...]删除指定的一批keys,如果删除中的某些key不存在,则直接忽略;返回1或0表示对应key是否删除成功

172.16.255.101:6379> EXISTS k3
(integer) 1
172.16.255.101:6379> DEL k3
(integer) 1
172.16.255.101:6379> EXISTS k3
(integer) 0

2.4 TYPE命令

TYPE key返回key所存储的value的数据结构类型,它可以返回string, list, set, zset 和 hash等不同的类型

172.16.255.101:6379> TYPE k2
string

2.5 EXPIRE命令

EXPIRE key seconds 设置key的过期时间,超过时间后,将会自动删除该key;返回值为 1 表示成功设置过期时间;返回值为 0 表示key不存在或者不能设置过期时间。设置过期时间后,如果重新使用SET命令会导致该键的过期时间被清空,该键被重新设置为永不过期

PEXPIRE key milliseconds 这个命令和EXPIRE命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像EXPIRE命令那样,以秒为单位。

PERSIST key取消key的过期时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key );当生存时间移除成功时,返回值为 1,如果 key 不存在或 key 没有设置生存时间,返回值为 0。

TTL key返回key剩余过期时间的有效秒数,这种反射能力允许Redis客户端检查指定key在数据集里面剩余的有效期;执行该命令,如果key不存在或者已过期,返回 -2;如果key存在并且没有设置过期时间(永久有效),返回 -1。

PTTL key,这个命令类似于TTL命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像TTL命令那样,以秒为单位。

172.16.255.101:6379> EXPIRE k1 100
(integer) 1
172.16.255.101:6379> TTL k1
(integer) 92
172.16.255.101:6379> TTL k1
(integer) 88
172.16.255.101:6379> TTL k1
(integer) 87
172.16.255.101:6379> set k1 v11
OK
172.16.255.101:6379> TTL k1
(integer) -1

03 列表命令

3.1 RPUSH/RPOP命令

RPUSH key value [value ...]向存于 key 的列表的尾部插入所有指定的值;如果 key 不存在,那么会创建一个空的列表然后再进行 push 操作;其返回值是PUSH操作完成后的列表长度。该命令也可以把多个元素Push入队列,只需要在命令后面指定多个参数;元素是从左到右一个接一个从列表尾部插入;比如命令 RPUSH mylist a b c 会返回一个列表,其第一个元素是 a ,第二个元素是 b ,第三个元素是 c。

RPOP key移除并返回存于 key 的 list 的最后一个元素;返回值是最后一个元素的值,或者当 key 不存在的时候返回空

LPUSH key value [value ...]RPUSH相反,本命令将所有指定的值插入到存于 key 的列表的头部;例如LPUSH mylist a b c,返回的列表是 c 为第一个元素, b 为第二个元素, a 为第三个元素。

LPOP key移除并且返回 key 对应的 list 的第一个元素

3.2 LLEN/LRANGE命令

LLEN key返回存储在 key 里的list的长度;如果 key 不存在,那么就被看作是空list,并且返回长度为 0

LRANGE key start stop返回存储在 key 的列表里指定范围内的元素; start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推;偏移量也可以是负数,表示偏移量是从list尾部开始计数。例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。如果start比list的尾部下标大的时候,会返回一个空列表。 如果stop比list的实际尾部大的时候,Redis会当它是最后一个元素的下标。

172.16.255.101:6379> RPUSH mylist 1 2 3
(integer) 3
172.16.255.101:6379> LPUSH mylist 7 8 9
(integer) 6
172.16.255.101:6379> TYPE mylist
list
172.16.255.101:6379> LLEN mylist
(integer) 6
172.16.255.101:6379> LRANGE mylist 0 -1
1) "9"
2) "8"
3) "7"
4) "1"
5) "2"
6) "3"
172.16.255.101:6379> RPOP mylist
"3"
172.16.255.101:6379> LPOP mylist
"9"
172.16.255.101:6379> LRANGE mylist 0 100
1) "8"
2) "7"
3) "1"
4) "2"

04 哈希表命令

Redis哈希表实现MySQL缓存,在Redis中缓存MySQL部分数据,然后直接使用HGET高效查询代替MySQL中的select查询:如果HGET查询到结果快速则返回,没有查到才使用select在MySQL中查询,并将查询结果缓存到Redis中。

4.1 HSET/HGET命令

HSET key field value 设置 key 指定的哈希集中指定字段的值;如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联;如果字段在哈希集中存在,它将被重写。其返回值为1表示field是一个新的字段,0则表示field原来在map里面已经存在(在新版的Redis中似乎功能和HMSET差不多,也可以多字段插入,但是返回值是长度)

HGET key field 返回 key 指定的哈希集中该字段所关联的值

HMSET key field value [field value ...] 设置 key 指定的哈希集中指定字段的值;该命令将重写所有在哈希集中存在的字段;如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联

HMGET key field [field ...] 返回 key 指定的哈希集中指定字段值的列表,并保持与请求相同的顺序

HGETALL key 返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍

172.16.255.101:6379> HSET admin:001 name wang athur rank0 age 100
(integer) 3
172.16.255.101:6379> HGET admin:001 name
"wang"
172.16.255.101:6379> HMSET admin:002 name he athur rank1 age 99
OK
172.16.255.101:6379> HMGET admin:002 name athur age
1) "he"
2) "rank1"
3) "99"
172.16.255.101:6379> HGETALL admin:001
1) "name"
2) "wang"
3) "athur"
4) "rank0"
5) "age"
6) "100"

05 集合命令

集合是字符串的无序排列,和列表类型不同的是集合类型中不允许出现重复的元素

5.1 SADD/SREM命令

SADD key member [member ...] 添加一个或多个指定的member元素到集合的 key 中;指定的一个或者多个元素member 如果已经在集合key中存在则忽略;如果集合key 不存在,则新建集合key,并添加member元素到集合key中。其返回值是新成功添加到集合里元素的数量,不包括已经存在于集合中的元素

SREM key member [member ...] 在key集合中移除指定的元素;如果指定的元素不是key集合中的元素则忽略;如果key集合不存在则被视为一个空的集合,该命令返回0

SMEMBERS key 返回key集合所有的元素

172.16.255.101:6379> SADD myset 9 1 8 6 2
(integer) 5
172.16.255.101:6379> SMEMBERS myset 
1) "1"
2) "2"
3) "6"
4) "8"
5) "9"
172.16.255.101:6379> SREM myset 8 6
(integer) 2
172.16.255.101:6379> SMEMBERS myset 
1) "1"
2) "2"
3) "9"

5.2 SDIFF/SINTER/SUNION命令

SDIFF key [key ...] 返回一个集合与给定集合的差集的元素,求差集(其他集合没有而目标集合有的元素)

SINTER key [key ...] 返回指定所有的集合的成员的交集,求交集(其他集合和目标集合都有的元素)

SUNION key [key ...] 返回给定的多个集合的并集中的所有成员,求并集

172.16.255.101:6379> SADD set1 a b c d
(integer) 4
172.16.255.101:6379> SADD set2 c d e f
(integer) 4
172.16.255.101:6379> SDIFF set1 set2
1) "a"
2) "b"
172.16.255.101:6379> SINTER set1 set2
1) "c"
2) "d"
172.16.255.101:6379> SUNION set1 set2
1) "d"
2) "a"
3) "c"
4) "e"
5) "b"
6) "f"

参考资料

Redis命令官方文档

Guess you like

Origin blog.csdn.net/qq_41773806/article/details/120333100
Recommended