redis的5种数据结构的使用场景

redis一共有的5种数据结构

  • String —字符串
  • Hash —-
  • List —–列表
  • Set——集合
  • Sorted Set—-有序集合

  1. String
    String的数据结构是简单的key-value类型,value 不仅可以是 String,也可以是数字。
    使用场景:
    1.LEN :O(1)获取字符串长度
    2.APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍)
    3.设置和获取字符串的某一段内容
    4.设置及获取字符串的某一位(bit)
    5.批量设置一系列字符串的内容
    6.原子计数器
    7.GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用
  2. Hash
    存入对象,进行对象的增删查改
    使用场景:
    存储、读取、修改用户属性

  3. List–列表
    List 其实就是链表(redis 使用双端链表实现的 List)。使用 List 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另一个应用就是消息队列,可以利用 List 的 PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。Redis 还提供了操作 List 中某一段元素的 API,你可以直接查询,删除 List 中某一段的元素。
    使用场景:
    1.微博 TimeLine
    2.消息队列

  4. Set–集合
    Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集合性的数据。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
    使用场景:
    1.共同好友、二度好友
    2.利用唯一性,可以统计访问网站的所有独立 IP
    3.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐

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


其他功能使用场景

  1. 订阅-发布系统
    Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在 Redis 中,你可以设定对某一个 key 值进行消息发布及消息订阅,当一个 key 值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。
  2. 事务——Transactions
    谁说 NoSQL 都不支持事务,虽然 Redis 的 Transactions 提供的并不是严格的 ACID 的事务(比如一串用 EXEC 提交执行的命令,在执行中服务器宕机,那么会有一部分命令执行了,剩下的没执行),但是这个 Transactions 还是提供了基本的命令打包执行的功能(在服务器不出问题的情况下,可以保证一连串的命令是顺序在一起执行的,中间有会有其它客户端命令插进来执行)。Redis 还提供了一个 Watch 功能,你可以对一个 key 进行 Watch,然后再执行 Transactions,在这过程中,如果这个 Watched 的值进行了修改,那么这个 Transactions 会发现并拒绝执行。

参考地址:http://www.jb51.net/article/54774.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值