欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

redis初学建表问题

程序员文章站 2023-12-26 21:47:57
...
假设目前有mysql表article结构为
id
title标题
info内容
tags标签id集合
status状态(-1,0,1,2)
atime添加时间
utime更新时间
ptime发布时间
需求按(标签/状态)获取文章根据(添加/更新/发布)时间排序
此时redis表应当如何设计?
目前的想法是
string类型
article:title:{id}
article:info:{id}
article:tags:{id}
article:status:{id}
article:atime:{id}
article:utime:{id}
article:ptime:{id}
set类型
全部集合:article:list
根据状态分开存储集合:article:status:{-1/0/1/2}
根据标签分开存储集合article:tag:{tag_id}

使用类似sort article:tag:1 by article:atime:*来获得排序,这样设计是否合理?

还有一个问题,尝试做搜索的时候,使用
zrangebylex article:status:0 [f (g
结果报错
ERR unknown command 'zrangebylex'
是什么原因?

回复内容:

假设目前有mysql表article结构为
id
title标题
info内容
tags标签id集合
status状态(-1,0,1,2)
atime添加时间
utime更新时间
ptime发布时间
需求按(标签/状态)获取文章根据(添加/更新/发布)时间排序
此时redis表应当如何设计?
目前的想法是
string类型
article:title:{id}
article:info:{id}
article:tags:{id}
article:status:{id}
article:atime:{id}
article:utime:{id}
article:ptime:{id}
set类型
全部集合:article:list
根据状态分开存储集合:article:status:{-1/0/1/2}
根据标签分开存储集合article:tag:{tag_id}

使用类似sort article:tag:1 by article:atime:*来获得排序,这样设计是否合理?

还有一个问题,尝试做搜索的时候,使用
zrangebylex article:status:0 [f (g
结果报错
ERR unknown command 'zrangebylex'
是什么原因?

zrangebylex需要redis >= 2.8.9

sort article:tag:1 by article:atime:* 这句话是获得添加时间排序的标签为1的文章id排序吧?这设计可行

string类型的话不太推荐,会造成key过多

相关标签: redis php mysql

上一篇:

下一篇: