网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

Redis中7种集合类型应用场景

【 作者:Elton 更新时间:2012-05-16 | 字体:
[导读]Strings Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。使用Strings类型,你可以完全实现目前 Memcached 的功能>,并且效率更高>?>>;箍梢韵硎躌edis的定时持久化>,操作日志及 Replicat...

Strings

Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字>>>。使用Strings类型,你可以完全实现目前 Memcached 的功能>,并且效率更高>?;箍梢韵硎躌edis的定时持久化>>,操作日志及 Replication等功能。除了提供与 Memcached 一样的get>、set>、incr、decr 等操作外,Redis还提供了下面一些操作:

  • 获取字符串长度
  • 往字符串append内容
  • 设置和获取字符串的某一段内容
  • 设置及获取字符串的某一位(bit)
  • 批量设置一系列字符串的内容

Hashs

在Memcached中>>,我们经常将一些结构化的信息打包成hashmap>,在客户端序列化后存储为一个字符串的值,比如用户的昵称、年龄>>>、性别>>、积分等>,这时候在需要修改其中某一项时>>>,通常需要将所有值取出反序列化后,修改某一项的值>>>,再序列化存储回去>。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。

Lists

Lists 就是链表,相信略有数据结构知识的人都应该能理解其结构。使用Lists结构>,我们可以轻松地实现最新消息排行等功能>。Lists的另一个应用就是消息队列>,可以利用Lists的PUSH操作>>,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。Redis还提供了操作Lists中某一段的api,你可以直接查询>>,删除Lists中某一段的元素>。

Sets

Sets 就是一个集合>,集合的概念就是一堆不重复值的组合>。利用Redis提供的Sets数据结构>,可以存储一些集合性的数据,比如在微博应用中>>,可以将一个用户所有的关注人存在一个集合中>>>,将其所有粉丝存在一个集合>。Redis还为集合提供了求交集、并集>、差集等操作,可以非常方便的实现如共同关注>、共同喜好>>、二度好友等功能,对上面的所有集合操作>,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

Sorted Sets

和Sets相比>,Sorted Sets增加了一个权重参数score>,使得集合中的元素能够按score进行有序排列>,比如一个存储全班同学成绩的Sorted Sets,其集合value可以是同学的学号>>,而score就可以是其考试得分>,这样在数据插入集合的时候>,就已经进行了天然的排序。另外还可以用Sorted Sets来做带权重的队列>>,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务>。让重要的任务优先执行>>。

Pub/Sub

Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中>,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息>。这一功能最明显的用法就是用作实时消息系统>>>,比如普通的即时聊天>,群聊等功能>>。

Transactions

谁说NoSQL都不支持事务>>,虽然Redis的Transactions提供的并不是严格的ACID的事务(比如一串用EXEC提交执行的命令,在执行中服务器宕机,那么会有一部分命令执行了,剩下的没执行)>,但是这个Transactions还是提供了基本的命令打包执行的功能(在服务器不出问题的情况下,可以保证一连串的命令是顺序在一起执行的>>,中间有会有其它客户端命令插进来执行)。Redis还提供了一个Watch功能,你可以对一个key进行Watch,然后再执行Transactions>>>,在这过程中>>,如果这个Watched的值进行了修改,那么这个Transactions会发现并拒绝执行。
 

原文:http://www.chinawobo.com/index.php/2011/08/802

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载>,但请务必注明出处和原始作者>。文章版权归文章原始作者所有>。对于被本站转载文章的个人和网站,我们表示深深的谢意>。如果本站转载的文章有版权问题请联系我们>>,我们会尽快予以更正。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
微商货源 | 冠珠陶瓷 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 |
RunTime:8.21ms QueryTime:7