zhu894532094 发表于 2018-11-2 12:29:02

redis应用之——标签

  假设需要需要查询既属于,又属于,又属于的情况,以mysql为例,语句会很长,很耗资源。而redis能轻松解决这个问题:
  有若干本书,分别属于若干个标签(类型):
  'php圣经','java圣经','C++圣经','asp圣经','php从入门到放弃','go圣经','linux内核编程','python圣经'
  属于php的:
  'php圣经','php从入门到放弃'
  属于web的:
  'php圣经','asp圣经','php从入门到放弃'
  属于code的:
  'php圣经','java圣经','C++圣经','asp圣经','php从入门到放弃','go圣经','python圣经'
  属于system的:
  'linux内核编程
  接下来,字段设置:
  先将书设置好:
  set book:1:title 'php圣经'
  set book:2:title 'java圣经'
  set book:3:title 'C++圣经'
  set book:4:title 'asp圣经'
  set book:5:title 'php从入门到放弃'
  set book:6:title 'go圣经'
  set book:7:title 'linux内核编程'
  set book:8:title 'python圣经'
  将书签设置好:
  sadd tag:php    1 5
  sadd tag:web    1 4 5
  sadd tag:code   1 2 3 4 5 6 8
  sadd tag:system 7
  用集合,取交集的方式迅速求出
  既属于php标签又属于web标签的:
  127.0.0.1:6379> sinter tag:php tag:web
  1
  5
  既属于php标签又属于web标签又属于code标签的:
  127.0.0.1:6379> sinter tag:php tag:web tag:code
  1
  5
  获取1、5的书名:
  127.0.0.1:6379> get book:1:title
  php圣经
  127.0.0.1:6379> get book:5:title
  php从入门到放弃
  注意:正常情况下redis命令窗口不显示中文,要显示中文要加上--raw参数
  $ redis-cli
  127.0.0.1:6379> get book:1:title
  "php\xe5\x9c\xa3\xe7\xbb\x8f"
  127.0.0.1:6379>
  $ redis-cli --raw
  127.0.0.1:6379> get book:1:title
  php圣经

页: [1]
查看完整版本: redis应用之——标签