redis:数据库管理命令

select:切换数据库

select dbIndex
  • Redis默认配置中是有16个数据库(0-15)。各个数据库之间的数据没有任何关联,可以存在相同的键。
  • 虽然redis提供了多数据库,但是现在并不推荐使用。redis3.0中已经逐渐弱化了这个功能,比如redis的分布式实现redis cluster只允许使用0号数据库,只不过为了向下兼容老版本的数据库功能才没有废弃调

那么为什么要废弃调这个“优秀”的功能呢,原因有三:

  • redis是单线程的。如果使用多个数据库,那么这些数据库仍然是使用一个CPU,彼此之间还是会受到影响
  • 多数据库的使用方式,会让调试和运维不同业务的数据库变得困难,假如有一个慢查询存在,仍然会影响其他数据库,这样会使得别的业务定位问题非常困难
  • 部分redis客户端根本不支持这种方式。即使支持,开发的时候来回切换数据形式的数据库,很容易弄乱

建议:在一台机器上部署多个redis实例,彼此之间用端口区分,因为现代计算机或者服务器通常是多核CPU。这样即保证了业务之间不会被影响,又合理的利用了CPU资源

flushdb/flushall:清空数据库

flushdb:清空当前数据库

作用

  • 清空当前数据库中的所有key
  • 此命令从不失败。

返回值

总是返回 OK

实例

redis> DBSIZE    # 清空前的 key 数量
(integer) 4

redis> FLUSHDB
OK

redis> DBSIZE    # 清空后的 key 数量
(integer) 0

flushall:清空所有数据库

作用

  • 清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
  • 此命令从不失败

返回值

总是返回 OK

实例

redis> DBSIZE            # 0 号数据库的 key 数量
(integer) 9

redis> SELECT 1          # 切换到 1 号数据库
OK

redis[1]> DBSIZE         # 1 号数据库的 key 数量
(integer) 6

redis[1]> flushall       # 清空所有数据库的所有 key
OK

redis[1]> DBSIZE         # 不但 1 号数据库被清空了
(integer) 0

redis[1]> SELECT 0       # 0 号数据库(以及其他所有数据库)也一样
OK

redis> DBSIZE
(integer) 0

注意

虽然这两个命令可以非常方便的清理数据,但是也带来两个问题:

  • 会将所有数据清除,一旦误操作后果不堪设想。不过可以通过rename-command配置规避这个问题,以及在误操作后快速恢复数据。
  • 如果当前数据库键值数据较多,flushdb/flushall存在阻塞redis的可能性,所以使用flushdb、flushall一定要小心谨慎
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值