长生剑、孔雀翎、碧玉刀、多情环、离别钩、霸王枪、拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings、Hashs、Lists、Sets、Sorted Sets、Pub/Sub、Transactions 也比作七种武器,为大家讲解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之七种武器相关推荐

  1. Apache Common HttpClient使用之七种武器

    1.拳头之Get/Post 拳头是最基本的一重武器,也是最重要的,好比练武之人必须先扎稳马步. java 代码 HttpClient httpclient=new HttpClient();//创建一 ...

  2. 征文连载丨MogDB企业应用之七种武器

    2022年8月4日至9月9日,墨天轮社区联合云和恩墨发起了首届「MogDB 主题征文活动」,邀请各位技术从业者学习.使用 MogDB 数据库,分享使用心得与实战案例,一起探索这款融合了众多创新特性的商 ...

  3. 磁盘加密技术保障数据安全之七种武器

    TruCrypt.PGP.FreeOTFE.BitLocker.DriveCrypt和7-Zip,这些加密程序提供了异常可靠的实时加密功能,可以为你确保数据安全,避免数据丢失.被偷以及被窥视. 很少有 ...

  4. 揭密Oracle之七种武器二:DTrace语法:跟踪物理IO

    其实本章是以物理IO为例,介绍DTrace的基本语法.本篇内容还是比较多的,应该足够有兴趣的朋友学习一周了.下周,再推出我的第三章.          另外说明一下,我并不是DTrace专家,我用DT ...

  5. 揭密Oracle之 七种武器

    揭密Oracle之 七种武器 第一章 搭建测试环境 vage 揭密Oracle之 七种武器  第一章 搭建测试环境 (揭密Oracle之七种武器第二章地址:DTrace语法:跟踪物理IO http:/ ...

  6. Redis的七种武器及其适合的应用场景

    长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...

  7. 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。

    本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...

  8. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)...

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

  9. 用计算机弹剪刀刺客,刺客伍六七:阿七使用过的四种武器,剪刀最常用,这个需要臂力!...

    哈喽各位小伙伴们大家好!不知道大家有没有看过<刺客伍六七>这部国产动漫呢?它是一部很不错的作品,不仅画风十分美丽,剧情也是很有看点的,而且还玩梗无数,可以是一部宝藏作品了!那么作为刺客的阿 ...

最新文章

  1. lnmp上搭建zabbix
  2. 170亿参数加持,微软发布史上最大Transformer模型
  3. exchange2003防垃圾邮件设置
  4. 自律到极致-人生才精致「第7期」:领奖通知
  5. 老夫疗法少年狂:微软中国CTO黎江:不要给区块链贴标签,也不要非黑即白区分谁是好人谁是坏人
  6. “噪声对比估计”杂谈:曲径通幽之妙
  7. [Unity][FlowCanvas] 预制体中新建的组件无法拖入 GameObject 类型的黑板的解决办法:关闭预制体之后再打开
  8. 集合的体系结构 0119
  9. EXCEL中制作省市区行政区地图
  10. Android 处理软键盘遮挡问题
  11. 海岸鸿蒙质检质控样浓度一览表,环境标准样品数值对照表(质控样)
  12. 有了这15款编程游戏,谁都可以学编程!
  13. IT运维外包甩不掉的包袱
  14. 计算机网络实践网线制作,一种用于计算机网络对接网线接头的制作方法
  15. Gym - 102569A
  16. 负载均衡主要应用在哪里?
  17. 坚石诚信ET系列加密锁应用保护技巧
  18. htlm5实习报告_网页 实习报告
  19. 2021浙江省卫生副高考试成绩查询,2021卫生职称考试成绩查询官网
  20. 20世纪1号是星期天数

热门文章

  1. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
  2. 人工智能AI正从这五个方面改变公司
  3. 卷积神经网络(CNN)的原理
  4. 《数学之美》第5章 隐含马尔可夫模型
  5. 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
  6. 华为深度学习新模型DeepShift:移位和求反代替乘法,神经网络成本大降
  7. 2019年汽车行业深度投资研究
  8. 展望2021年:智能机器人可监督工业机器人干活,效率提升30%
  9. 干货!我的计算机网络怎么考了 100 分的?
  10. 雷军写代码水平如何?