zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis 多数据库

2023-03-20 14:52:18 时间

前言

Redis 是一款非常好用的KV缓存数据库,生产中会大量使用到

为了区分应用,常规的做法是通过增加redis实例,监听在不同端口上以进行区分,这样在体量小的时候问题不大,当体量大了,就会有产生如下问题:

  • redis实例多了
  • 每个redis实例的潜能并未发挥充分
  • 应用与redis之间的对应容易混乱
  • 日志与数据文件分散,配置修改麻烦
  • slave数量爆增

总体来说,就是明显提升了运维管理成本

那有没有很好的解决办法?

我们之所以需要区别对待,很大一部分原因是希望获得一个干净的名称空间,不被其它应用意外篡改

redis本身具备的多数据库特性就可以很好的满足这类需求,完全不必运行多个实例

(当然,由于redis的单线程特性,如果应用单个操作平均耗时过长,使用实例区分开来还是很有必要的)

这里分享一下redis的多数据特性与简单操作

Tip:当前的最新版本为 redis-3.0.7


概要


环境

[root@h102 redis-3.0.7]# uname -a 
Linux h102.temp 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@h102 redis-3.0.7]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel 
 on an m

[root@h102 redis-3.0.7]# ./src/redis-server --version
Redis server v=3.0.7 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=db8110605b24fc73
[root@h102 redis-3.0.7]#

切换数据库

登录后默认是连接到0号数据库

数据的下标是从0开始的,代表第一个数据库,默认数据数据库没有下标,其实就是0号数据库

[root@h102 redis-3.0.7]# ./src/redis-cli -p 6379
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> 

可以使用 select 加上数据进行数据库切换

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> select 4
OK
127.0.0.1:6379[4]>

切换后下标会变


配置

我们尝试切换到16

127.0.0.1:6379> select 16
(error) ERR invalid DB index
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]> select 14
OK
127.0.0.1:6379[14]> select 13
OK
127.0.0.1:6379[13]> select 12
OK
127.0.0.1:6379[12]> 
...
...
127.0.0.1:6379[3]> select 2
OK
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> 

但是15-0号数据库有,说明默认有16个数据库可用

这个配置可以在这里看

127.0.0.1:6379> CONFIG GET databa*
1) "databases"
2) "16"
127.0.0.1:6379>
127.0.0.1:6379> CONFIG set databases 20
(error) ERR Unsupported CONFIG parameter: databases
127.0.0.1:6379>

并且发现不能修改

这个初始化配置是在启动redis之前在 redis.conf文件中指定的

[root@h102 redis-3.0.7]# cat redis.conf | grep -v "^#" | grep -v "^$"| grep databa
databases 16
[root@h102 redis-3.0.7]# 

我们可以修改配置,指定20个库,重启服务

127.0.0.1:6379> CONFIG GET databa*
1) "databases"
2) "20"
127.0.0.1:6379> select 16
OK
127.0.0.1:6379[16]> select 18
OK
127.0.0.1:6379[18]> select 19
OK
127.0.0.1:6379[19]> select 20
(error) ERR invalid DB index
127.0.0.1:6379>

多出来了几个库,符合我们的预期