Redis学习笔记3--Redis键值设计
2016-01-25 15:26
495 查看
原文转载:http://blog.csdn.net/freebird_lb/article/details/7733988
tag在互联网应用里尤其多见,首先看下面的关系型数据表:
Book表:
Tag表:
现在用redis将这两张表的数据存起来:
保存Book的数据:
保存Tag的数据,使用集合来存储数据,因为集合可以求交集、并集、差集:
如果要取得即属于ruby又属于web的书:
如果要取得属于ruby,但不属于web的书:
属于ruby和属于web的书的合集:
tag在互联网应用里尤其多见,首先看下面的关系型数据表:
Book表:
id | name | author |
1 | The Ruby Programming Language | Mark Pilgrim |
2 | Ruby on rail | David Flanagan |
3 | Programming Erlang | Joe Armstrong |
tag_name | book_id |
ruby | 1 |
ruby | 2 |
web | 2 |
erlang | 3 |
保存Book的数据:
redis 127.0.0.1:6379> incr book_id #用book_id这个key保存book表的id,每次要获得一个新的 #book_id用incr命令自增取得 (integer) 1 #incr命令返回1,则用key为book:1的hash来保存一个book对象,对象属性为hash的field redis 127.0.0.1:6379> hset book:1 name "The Ruby Programming Language" (integer) 1 redis 127.0.0.1:6379> hset book:1 author "Mark Pilgrim" (integer) 1 redis 127.0.0.1:6379> hgetall book:1 #用hgetall命令测试一个,返回hash的所有属性和值 1) "name" 2) "The Ruby Programming Language" 3) "author" 4) "Mark Pilgrim" redis 127.0.0.1:6379> incr book_id #创建第2个book对象,先incr一个book_id获得新book的id (integer) 2 redis 127.0.0.1:6379> hset book:2 name "Ruby on rail" (integer) 1 redis 127.0.0.1:6379> hset book:2 author "David Flanagan" (integer) 1 redis 127.0.0.1:6379> hgetall book:2 1) "name" 2) "Ruby on rail" 3) "author" 4) "David Flanagan" redis 127.0.0.1:6379> incr book_id (integer) 3 redis 127.0.0.1:6379> hset book:3 name "Programming Erlang" (integer) 1 redis 127.0.0.1:6379> hset book:3 author "Joe Armstrong" (integer) 1 redis 127.0.0.1:6379> hgetall book:3 1) "name" 2) "Programming Erlang" 3) "author" 4) "Joe Armstrong" |
redis 127.0.0.1:6379> sadd tag:ruby 1 (integer) 1 redis 127.0.0.1:6379> sadd tag:ruby 2 (integer) 1 redis 127.0.0.1:6379> sadd tag:web 2 (integer) 1 redis 127.0.0.1:6379> sadd tag:erlang 3 (integer) 1 |
redis 127.0.0.1:6379> sinter tag:ruby tag:web 1) "2" |
redis 127.0.0.1:6379> sdiff tag:ruby tag:web 1) "1" |
redis 127.0.0.1:6379> sunion tag:ruby tag:web 1) "1" 2) "2" |
相关文章推荐
- tomcat + redis 实现session共享
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记1--入门篇
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
- Redis 数据库的安装
- 如何统计Redis中各种数据的大小
- Nginx配置srcache_nginx模块搭配Redis建立缓存系统
- Java中使用jedis操作redis————转载
- 思考:系统的瓶颈到底在哪儿,redis的作用?
- 在linux环境部署redis
- redis快速入门教程
- Redis能干啥?细看11种Web应用场景
- Redis特点
- redis启动过程
- express + redis 构建基于node的开发环境
- tornado的简单使用
- Redis keys命令
- Redis源码学习四、字典
- redis集群
- redis命令 - APPEND