一、基础命令

先启动redis服务,使用redis-cli客户端连到redis数据库里面

redis正则匹配key做hashtag redis scan正则_数据库

 

1. 获取符合规则的键: keys

要点:

(1)keys 后面可以指定正则表达式

(2)在生产环境下建议禁用keys命令,因为这个命令会查询过滤redis中的所有数据,可能会造成服务阻塞,影响redis执行效率。

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> keys *
1) "a"
127.0.0.1:6379> keys a*
1) "a"

scan命令用于迭代当前数据库中的key集合,它支持增量式迭代,每次执行只会返回少量元素,所以它可以用于生产环境,而不会出现像keys 命令那样可能会阻塞服务器的问题。

  • SCAN命令是一个基于游标的迭代器。这意味着命令每次被调用都需要使用上一次调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程
  • 当SCAN命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。
  • SCAN 命令的返回值是一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组, 这个数组中包含了所有被迭代出来的元素(默认情况下scan返回10条数据)。
127.0.0.1:6379> set a1 1
OK
127.0.0.1:6379> set a2 2
OK
127.0.0.1:6379> set a3 3
OK
127.0.0.1:6379> set a4 4
OK
127.0.0.1:6379> set a5 1
OK
127.0.0.1:6379> set a6 1
OK
127.0.0.1:6379> set a7 1
OK
127.0.0.1:6379> set a8 1
OK
127.0.0.1:6379> set a9 1
OK
127.0.0.1:6379> set a10 1
OK
127.0.0.1:6379> set a11 1
OK
127.0.0.1:6379> scan 0
1) "3"
2)  1) "a6"
    2) "a7"
    3) "a8"
    4) "a11"
    5) "a1"
    6) "a9"
    7) "a4"
    8) "a2"
    9) "a3"
   10) "a"
127.0.0.1:6379> scan 3
1) "0"
2) 1) "a5"
   2) "a10"

所以,如果redis中有很多key,我们可以使用scan命令来迭代,一次迭代一部分,不至于造成阻塞,如果redis中的key比较少,那么使用keys * 也是可以的。

指定返回的数量

127.0.0.1:6379> scan 0 count 5
1) "12"
2) 1) "a6"
   2) "a7"
   3) "a8"
   4) "a11"
   5) "a1"

2. 判断键是否存在: exists

127.0.0.1:6379> exists a
(integer) 1
127.0.0.1:6379> exists b
(integer) 0

3. 删除键:del

127.0.0.1:6379> del a
(integer) 1

 也支持一次删除多个键

127.0.0.1:6379> del a1 a2
(integer) 2

4. 获取键的类型:type

 返回值可能是这五种类型(string,hash,list,set,zset)

127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> type a
string

5. 帮助命令: help

127.0.0.1:6379> help set

  SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

6. 退出客户端:quit/exit

不过我还是习惯使用 ctrl+c 退出redis-cli客户端

注意:Redis的命令不区分大小写,但是key的名称需要区分大小写!

二、Redis多数据库特性

1. 默认支持16个数据库

Redis默认支持16个数据库,通过databases参数控制的,这个参数在redis.conf配置文件中

[root@bigdata01 redis-5.0.9]# cat redis.conf |grep databases
# Set the number of databases. The default database is DB 0, you can select
# dbid is a number between 0 and 'databases'-1
databases 16
# Compress string objects using LZF when dump .rdb databases?

2. 切换数据库

每个数据库对外都是以一个从0开始的递增数字命名,不支持自定义。Redis默认选择的是0号数据库,可以通过 select 命令切换。

redis正则匹配key做hashtag redis scan正则_redis_02

 3. 如何选择数据库

  • 一般在工作中会使用2~3个数据库,可以根据业务类型来分库,不同业务的数据存到不同的库里面
  • 还有一种用法是,一个库作为测试库,一个库作为正式库。
  • 如果没有特殊需求,一般使用0号数据库就可以了,这个库使用起来比较方便,默认就是0号库,不需要使用select切换。

具体在工作中怎么用都行,只要理解它的特性就可以了 

注意:

(1)但是有一点需要注意:多个数据库之间并不是完全隔离的,如果使用flushall命令,则会清空redis中所有数据库内的数据。

(2)在redis中使用多个库,并不能提高redis的存储能力,因为默认这16个库共用redis的内存存储空间,如果想要提高redis的存储能力,需要给我们的服务器增加内存才可以。

127.0.0.1:6379> select 10
OK
127.0.0.1:6379[10]> set c 10
OK
127.0.0.1:6379[10]> keys *
1) "c"
127.0.0.1:6379[10]> flushall
OK
127.0.0.1:6379[10]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)

清空当前数据库中的数据,可以使用flushdb

127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set b 1
OK
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "a"
127.0.0.1:6379>