Redis作为现今热门的Nosql数据库,可以极大地简化存储结构,它支持几乎所有基本类型(如:字符串,整形,哈希,列表,集合和有序集合),并且拥有非常强大的数据操作模式和扩展性,能够满足大多数开发业务的有效需求,但是 Redis并不支持建立跨表的关系,因此我们需要采用表间指针的方式将数据表中的记录彼此关联起来。
现在,借助Redis的特性,利用指针的方式,可以实现无数据库表的应用,这样许多原来任务需要在数据库表中进行多表联合查询的任务,可以都通过Redis实现。这样,即使在没有完整数据描述,无需数据表,我们也可以实现将跨表数据联系起来。
下面以一个简单的例子说明如何利用Redis实现无数据表:
假设有一个 user 表,存放用户的基本信息:
user :
id | name | sex
1 | a | m
2 | b | f
已知有如下表
music :
mid | name | user
1 | m1 | 1
2 | m2 | 2
则可以通过如下 redis 命令将user表和music表实现关联
//用户’a’的音乐
HGET music_user:1 name
//”m1″
//音乐’m1’的用户
HGET user_music:1 name
//”a”
具体实现步骤:
1. 针对 user 表中的每条记录,新建类似 user_music:id 为哈希类型的 key 存储关系,同时,把 user 表中 name 放进去,如:
HMSET user_music:1 name a
2. 针对 music 表中的每条记录,新建类似 music_user:id 为哈希类型的 key 来存储关系,同时把music表中的name放进去,如:
HMSET music_user:1 name m1
以上就可以实现没有数据表的关联查询,节省不少存储空间和开发时间,带来更大的效率提升。
在实际开发过程中,熟练利用 Redis 的这种指针机制来实现对跨表数据联系起来,无疑能够极大地提升开发效率,节省存储空间。