Redis散列类型及应用

在了解字符串的基本类型之后,遇到一个问题,如果要存储类似于文章这样的包含标题,标签,作者,正文等多项内容的时候,通过序列化成字符串保存在某个key中,但如果要修改其中一项内容,需要先反序列化,修改内容,在序列化,在保存。看起来就很不靠谱。而这种存储情况,用散列类型的数据可以很方便且高效的实现

命令

赋值和取值

《Redis散列类型及应用》 hset命令不必区分插入和更新操作,如果字段已经存在则更新值

同时设置或获取多个值

《Redis散列类型及应用》

获取所有key和value

《Redis散列类型及应用》

判断字段是否存在

《Redis散列类型及应用》

当字段不存在时,赋值

《Redis散列类型及应用》 当字段存在时,不执行操作

增加数字

《Redis散列类型及应用》  不存在incr命令

删除字段

《Redis散列类型及应用》 可以连续删除多个字段,返回删除字段数量

只获取字段名

《Redis散列类型及应用》

只获取字段值

《Redis散列类型及应用》

获取字段数量

《Redis散列类型及应用》

应用

回头文章开头准备解决的问题,用散列类型保存文章的时候,需要修改文章内容或是标题,只需要通过hset命令赋新值即可。

问题

相应的,还是这个保存文章的问题,虽然散列类型解决了更新对象中某一项内容的操作,但是当文章较多的时候,如果需要分页展示文章的时候,遇到了麻烦

首先,如果用散列数据类型来实现文章分页,比如一共有50篇文章,即post:count=50

在程序中,根据当前页面值,计算出当前页的文章开始id $startId,和结束id $endId。

取出$startId – $endId之间的10篇文章,并显示。

问题就是,为保证id连续,用户不能删除文章,否则程序就需要通过exists命令来判断当前id是否存在,同时为保证每页都是10篇文章,不论当前是第几页,都要从开头计算当前页应该显示哪些文章

未解决这个问题,可以通过列表类型来实现

    原文作者:AntFoot
    原文地址: https://www.jianshu.com/p/6d7a438d4164
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞