- strings(字符串)
a) 如果只使用 redis 中的字符串类型,且不使用 redis 的持久化功能,那么,redis 就和memcache 非常非常的像了;
b) 在遇到数值操作时,会自动转换过为字符串,如写入数字1,读出来将是字符串1;
c) 本身具有原子性的指令:incr、 decr 和 Memecached 中 increment、 decrement 类似;
d) 应用场景:常规计数-微博数,粉丝数; - lists(列表)
alists 数据类型的实现不是数组而是通过链表这种数据结构实现;
b) 使用 Lists 结构,我们可以轻松地实现最新消息排行等功能。Lists 的另一个应用就是消息队列,可以利用 Lists 的 PUSH 操
作,将任务存在 Lists 中,然后工作线程再用 POP操作将任务取出进行执行;
c) 每个子元素都是 String 类型的双向链表,可以通过 push 和 pop 操作从列表的头部或者尾部添加或者删除元素,这样 List
即可以作为栈,也可以作为队列; - sets(无序集合)
a) 所谓集合就是一堆不重复值的组合,并且是没有顺序的;
b) 在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 还为集合提供了求交
集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使
用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。 - sorted sets(有序集合)
a) 和 Sets 相比,Sorted Sets 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列;
b)比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数
据插入集合的时候,就已经进行了天然的排序。可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为1,重要消
息的 score 为2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。
c) 应用场景:在线游戏的排行榜,根据得分你通常想要:
i. 列出前100名高分选手
i.列出某用户当前的全球排名 - hashes(哈希)
a) 在Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值,比如
用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,
再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而
Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。
b) 应用场景:存储部分变更数据,如用户信息,session 共享;
本着互联网开源、开放的精神和宗旨,本站所有内容可以随便传播。如需转载或分享无需说明来源。
有任何疑问或烦恼,欢迎评论区讨论。
458
暂无回复数据