当前位置:Gxlcms > PHP教程 > redis初学建表问题

redis初学建表问题

时间:2021-07-01 10:21:17 帮助过:63人阅读

假设目前有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过多

人气教程排行