【摘要】实际应用中会有多个项目都要使用redis,如果每一个app都要起一个单独的实例那会比较浪费,如果使用一个实例则必须要避免多个项目之间的key冲突问题。
其实redis2.x以上默认支持了16个数据,0-15,每个数据库相互之间是隔离的,这个比较类似关系型数据,如:mysql的多个数据库之间是互不影响。
redis.conf中相关配置:
databases 16
测试版本
redis_version:2.4.10:
连接redis
# redis-cli -p 6380
默认是db0,也可以使用select 0明确指出
redis 127.0.0.1:6380> select 0 OK redis 127.0.0.1:6380> set key1 "value1" OK redis 127.0.0.1:6380> set key2 "value2" OK redis 127.0.0.1:6380>
继续,在db1上进行操作
redis 127.0.0.1:6380[1]> set key1 "db1 value1" OK redis 127.0.0.1:6380[1]> set key2 "db1 value2" OK redis 127.0.0.1:6380[1]>
验证:
redis 127.0.0.1:6380[1]> select 0 OK redis 127.0.0.1:6380> keys * 1) "key2" 2) "key1" redis 127.0.0.1:6380> select 1 OK redis 127.0.0.1:6380[1]> keys * 1) "key2" 2) "key1" redis 127.0.0.1:6380[1]> info db0:keys=2,expires=0 db1:keys=2,expires=0
很明显能够看出来,redis不同数据库(keyspace 在redis-2.6以后的版本)中,key之间是互不影响的,当然,如果要在同一个数据库中也可以,前提是key能够事先定义好,比如按照项目或者app的名称作为前缀,从而避免key冲突的存在。