Redis之七种武器

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

长生剑、孔雀翎、碧玉刀、多情环、离别钩、霸王枪、拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 StringsHashsLists、Sets、Sorted Sets、Pub/SubTransactions 也比作七种武器,为大家讲解Redis的七种特性,并列举其适合的应用场景。

Strings

Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 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会发现并拒绝执行。

好了,本文就先说到这里,上面这些这只是Redis API的一些使用方式,可谓冰山一角,Redis就像一把瑞士军刀一样(或者是更万能的中国军铲),它创造了一系列更接近于应用场景的数据结构和API,目的在于让我们更直接的基于应用场景进行存储设计。更多的应用场景和组合式的应用还有待您自己的发掘。或者多关注本站(NoSQLFan.COM),你也能发现一些有意思的基于Redis的应用。同时也欢迎将你对Redis的使用方法通过NoSQLFan分享给更多的朋友。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
存储 NoSQL 中间件
完美!华为爆出Redis宝典,原来Redis性能可压榨到极致
Redis,是互联网技术领域使用最为广泛的存储中间件,Redis以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件。国内外有很多大型互联网公司都在使用Redis,比如:暴雪娱乐、腾讯、阿里、京东、华为、新浪微博等,很多小型公司也都在用。也可以说,对Redis的了解和应用实践已成为当下高级后端开发者绕不开的必备技能。
43 0
|
移动开发 NoSQL Ubuntu
Redis 攻击方法总结(二)
Redis 攻击方法总结
421 0
Redis 攻击方法总结(二)
|
缓存 NoSQL Redis
|
SQL 存储 缓存
关于redis的几件小事(一)redis的使用目的与问题
介绍了Redis是什么以及Redis的使用场景
|
存储 消息中间件 缓存
第十四章《redis》
第十四章《redis》
第十四章《redis》
|
存储 缓存 NoSQL
Redis 潜在问题
Redis 缓存技术常用于高并发情况下,有效减轻服务器和数据库负载。如果 Redis 出现问题导致无法均衡负载,就可能导致服务崩溃。
122 0
|
存储 缓存 NoSQL
走进 Redis,让你重新认识 redis。绝不是表面
说到Redis我们不禁的会联想到:缓存。提到缓存我们要聊的就有很多了。
|
存储 消息中间件 缓存
那些年你不能错过的之【Redis】
本文主要介绍 Redis相关内容
97 0
|
存储 缓存 监控
带你走进Redis的世界 - 分布式环境下Redis的挑战
带你走进Redis的世界 - 分布式环境下Redis的挑战
126 0
带你走进Redis的世界 - 分布式环境下Redis的挑战
|
消息中间件 缓存 NoSQL
来看看我们是怎么玩儿 Redis 的
Redis 作为当下主流的 NoSQL 数据库,已经成为企业级开发不可或缺的一个重要组件了,现在大大小小的项目都会用到它,并且最新的版本已经达到 5.x 了。从这篇文章开始,我们会用一个系列的文章详细的给大家介绍一下 Redis 底层实现和使用场景,希望能帮助大家更好的使用。
来看看我们是怎么玩儿 Redis 的

热门文章

最新文章