Redis 是一款非常好用的KV缓存数据库,生产中会大量使用到
为了区分应用,常规的做法是通过增加redis实例,监听在不同端口上以进行区分,这样在体量小的时候问题不大,当体量大了,就会有产生如下问题:
总体来说,就是明显提升了运维管理成本
那有没有很好的解决办法?
我们之所以需要区别对待,很大一部分原因是希望获得一个干净的名称空间,不被其它应用意外篡改
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 \r 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>
多出来了几个库,符合我们的预期
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。