作者:专业长膘 | 来源:互联网 | 2023-09-25 16:22
在了解字符串的基本类型之后,遇到一个问题,如果要存储类似于文章这样的包含标题,标签,作者,正文等多项内容的时候,通过序列化成字符串保存在某个key中,但如果要修改其中一项内容,需要
在了解字符串的基本类型之后,遇到一个问题,如果要存储类似于文章这样的包含标题,标签,作者,正文等多项内容的时候,通过序列化成字符串保存在某个key中,但如果要修改其中一项内容,需要先反序列化,修改内容,在序列化,在保存。看起来就很不靠谱。而这种存储情况,用散列类型的数据可以很方便且高效的实现
命令
赋值和取值
hset命令不必区分插入和更新操作,如果字段已经存在则更新值
同时设置或获取多个值
获取所有key和value
判断字段是否存在
当字段不存在时,赋值
当字段存在时,不执行操作
增加数字
不存在incr命令
删除字段
可以连续删除多个字段,返回删除字段数量
只获取字段名
只获取字段值
获取字段数量
应用
回头文章开头准备解决的问题,用散列类型保存文章的时候,需要修改文章内容或是标题,只需要通过hset命令赋新值即可。
问题
相应的,还是这个保存文章的问题,虽然散列类型解决了更新对象中某一项内容的操作,但是当文章较多的时候,如果需要分页展示文章的时候,遇到了麻烦
首先,如果用散列数据类型来实现文章分页,比如一共有50篇文章,即post:count=50
在程序中,根据当前页面值,计算出当前页的文章开始id $startId,和结束id $endId。
取出$startId – $endId之间的10篇文章,并显示。
问题就是,为保证id连续,用户不能删除文章,否则程序就需要通过exists命令来判断当前id是否存在,同时为保证每页都是10篇文章,不论当前是第几页,都要从开头计算当前页应该显示哪些文章
未解决这个问题,可以通过列表类型来实现