在默认情况下,Redis服务器在启动时会创建16个数据库,不同的应用程序可以连到不同的数据库上,通过键值对的形式实现缓存等操作.
在实际项目里,常见的操作有通过修改配置更改在启动Redis服务器时创建数据库的个数,以及通过SELECT
命令切换当前程序所用的Redis数据库.
5.1.1 查看和设置默认的数据库个数
(base) root@yuanhong StudyRedisBaseOnDocker % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
可以看到,此时没有任何容器被启动或停止
step2. 创建一个空的配置文件redis.conf
(base) root@yuanhong StudyRedisBaseOnDocker % cd conf/chapter5/section5-1
(base) root@yuanhong section5-1 % cat redis.conf
(base) root@yuanhong section5-1 %
step3. 基于上述配置文件创建redis服务端
(base) root@yuanhong section5-1 % docker run -itd --name redis-server -v /StudyRedisBaseOnDocker/conf/chapter5/section5-1/redis.conf:/redisConfig/redis.conf -p 6379:6379 redis:latest redis-server /redisConfig/redis.conf
2c51ddee569950dd0d6b460433f176239aa6ade427d61e2f57f87edec8d8204c
此时由于配置文件中没有内容,所以启动时还是会加载各种默认的配置参数
(base) root@yuanhong section5-1 % docker exec -it redis-server /bin/bash
root@2c51ddee5699:/data# redis-cli
127.0.0.1:6379> CONFIG GET databases
1) "databases"
2) "16"
停止容器:
127.0.0.1:6379> exit
root@2c51ddee5699:/data# exit
exit
(base) yanglei@yuanhong section5-1 % docker stop redis-server
redis-server
修改配置文件的内容如下:
(base) yanglei@yuanhong section5-1 % cat redis.conf
# 指定数据库数量
databases 12
(base) yanglei@yuanhong section5-1 % docker start redis-server
redis-server
(base) yanglei@yuanhong section5-1 % docker exec -it redis-server /bin/bash
root@2c51ddee5699:/data# redis-cli
127.0.0.1:6379> CONFIG GET databases
1) "databases"
2) "12"
5.1.2 用SELECT
命令切换数据库
使用CLIENT LIST
命令查看客户端连接信息:
127.0.0.1:6379> CLIENT LIST
id=3 addr=127.0.0.1:35774 laddr=127.0.0.1:6379 fd=8 name= age=121 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
其中的db=0
表示当前客户端使用的是0号数据库
在第0号数据库中设置一些键值对:
127.0.0.1:6379> SET name 'Peter'
OK
使用SELECT
命令切换数据库:
127.0.0.1:6379> SELECT 1
OK
再次查看客户端连接信息:
127.0.0.1:6379[1]> CLIENT LIST
id=3 addr=127.0.0.1:35774 laddr=127.0.0.1:6379 fd=8 name= age=286 idle=0 flags=N db=1 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
可以看到,此时db=1
获取刚刚设置的key:
127.0.0.1:6379[1]> GET name
(nil)
切换回0号数据库后再次获取刚刚设置的key:
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> GET name
"Peter"
在实际应用中,一般不会更改Redis服务器的数据库个数.但是当不同的应用同时使用同一个Redis服务器时,建议让不同的应用使用不同的数据库,比如让订单应用模块使用0号数据库,会员应用模块使用1号数据库