Try Redis : Redis 入门教程

开篇

Redis 是一种以键值对(key-value)存储数据的NoSQL数据库。

键值对存储数据的本质是以某个键存储某个值。之后你可以用这个键把存储的值取出来。可以用SET命令以键‘servername’存储值‘fido’:

SET servername 'fido'

这样,数据就被存储了,之后可以使用GET取出刚刚存储的数据:

GET servername // 返回 "fido"

对于数据的操作,还有一些基本的命令,比如INCRDEL

INCR 用于原子地递增一个数值数据。而DEL则是删除一个值。

SET connections 10
INCR connections // 返回 11
INCR connections // 返回 12
DEL connections
INCR connections // 返回 1

给值指定寿命

可以通过EXPIRE设置一个值的存活时间,过了这个时间,该值就会被删除。通过TTL可以查看值的存活时间。

对于TTL

  • 如果一个值没有设置存活时间,那么TTL会返回-1,表示这个值不会过期(这是值的默认寿命:长生);

  • 如果一个值设置了存活时间,在存活时间内,对值使用TTL会返回相应的生命剩余时间;

  • 如果对一个不存在的值或是已经超过存活时间(会被删除)的值使用TTL,会返回-2

注意,每使用SET设置一个值时,该值的TTL都会被重置为默认。

例子:

SET resource:lock 'Redis Demo 1'
TTL resource:lock // 返回 -1EXPIRE resource:lock 120 //设置存活时间为120秒// 7秒后
TTL resource:lock // 返回 113
// 120秒以后
TTL resource:lock // 返回 -2SET resource:lock 'Redis Demo 2'
TTL resource:lock // 返回 -1

列表(list)

Redis也支持一些复杂的/复合的(complex)数据结构。这里第一个要说的是列表。列表是一系列有序的值的集合。
与列表交互的几个重要方法有:RPUSH, LPUSH, LLEN, LRANGE, LPOPRPOP

  • RPUSHLPUSH用于在列表的右端和左端插入数据。

  • LLEN返回列表的长度。

  • LRANGE返回一个子列表,它接收两个参数,它们标识你所要的子序列的首尾元素在原序列的位置。
    如果第二个元素是-1,则表示到序列的末尾。

  • LPOPRPOP删除并返回左右两端的第一个元素(跟栈的pop一样)。

例子(不用显式的创建列表,在向一个不存在的列表中插入值时,列表会被自动创建,当列表中的最后一个元素被pop后,列表会被自动删除):

RPUSH friends "Alice" // 创建一个列表friends并对其添加一个元素"Alice"
RPUSH friends "Bob"  // 向friends添加元素"Bob"
LPUSH friends "Sam" // 向friends添加元素"Sam"LRANGE friends 0 -1 // 返回 1) "Sam", 2) "Alice", 3) "Bob"
LRANGE friends 0 1 // 返回 1) "Sam", 2) "Alice"
LRANGE friends 1 2 // 返回 1) "Alice", 2) "Bob"LLEN friends // 返回 3
LPOP friends // 返回 "Sam"
RPOP friends // 返回 "Bob"LLEN friends // 返回 1
LRANGE friends 0 -1 // 返回 1) "Alice"

集合(set)

集合跟列表类似,但是集合是无序的,且集合内元素唯一。

集合的几个常用命令为:SADD, SREM, SISMEMBER, SMEMBERSSUNION

  • SADD 向集合中添加值。

  • SREM 从集合中删除给定的值。

  • SISMEMBER 接收一个参数,用以判断该参数的值是否在集合中,若在集合中返回1,否则返回0。
    如果不给参数,则返回整个列表。

  • SMEMBERS 返回集合中所有元素。

  • SUNION 合并两个集合。

例子(跟列表一样,集合也不用显式创建):

SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"SREM superpowers "reflexes"SISMEMBER superpowers "flight" // 返回 1
SISMEMBER superpowers "reflexes" // 返回 0SMEMBERS superpowers // 返回 1) "flight", 2) "x-ray vision"SADD birdpowers "pecking"
SADD birdpowers "flight"
SUNION superpowers birdpowers // 返回 1) "pecking", 2) "x-ray vision", 3) "flight"

有序集合(Sorted Sets)

集合是个很好用的数据结构,但是因为它是无序的,在某些情况下使用会不太方便。所以Redis 1.2 引入了有序集合。

有序集合的命令是Z开头,比如:有序集合的数据插入用的是ZADD而不是SADD
有序集合跟常规集合类似,不过有序集合的每个值都有一个与其关联的分数(associated score),这个分数用于排序集合内元素。

来一个例子:

ZADD hackers 1940 "Alan Kay"
ZADD hackers 1906 "Grace Hopper"
ZADD hackers 1953 "Richard Stallman"
ZADD hackers 1965 "Yukihiro Matsumoto"
ZADD hackers 1916 "Claude Shannon"
ZADD hackers 1969 "Linus Torvalds"
ZADD hackers 1957 "Sophie Wilson"
ZADD hackers 1912 "Alan Turing"

在例子中,第一个参数(出生年)是排序的分数,下面获取索引值2到4的元素(从0开始):

ZRANGE hackers 2 4 // 返回 1) "Claude Shannon", 2) "Alan Kay", 3) "Richard Stallman"

Hashes

Hashes 是字符串字段和字符串值之间的映射。所以它是表示对象的最佳数据类型:

HSET user:1000 name "John Smith"
HSET user:1000 email "john.smith@example.com"
HSET user:1000 password "s3cret"

使用HGETALL获得存储的数据(返回所有的字段名和字段值):


HGETALL user:1000

也可以把对象的属性一次设置完:

HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"

获取某个特定字段:

HGET user:1001 name // 返回 "Mary Jones"

数值类型在hash字段中也是很好用的,比如原子地步进一个数啥的都是可以的:

HSET user:1000 visits 10
HINCRBY user:1000 visits 1 // 返回 11
HINCRBY user:1000 visits 10 // 返回 21
HDEL user:1000 visits
HINCRBY user:1000 visits 1 // 返回 1

结束

本文翻译自 Try Redis。

到此为止,try redis教程结束。更多内容,请看下面链接:

  • Redis Documentation

  • Command Reference

  • Implement a Twitter Clone in Redis

  • Introduction to Redis Data Types

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go newscanner判断文件读取结束_Go单元测试-testing

在开发程序中,很重要一点就是测试,测试可以保证代码的质量,保证每个函数可以正常运行。但是如何保证写出来的程序是否正确。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量…

nextdate函数白盒测试问题 软件测试_软件测试基本常识

一、软件测试的分类:1.按照是否执行被测试软件来分:静态测试:是指不运行软件,测试包括代码检查、静态结构分析、代码质量度量等,主要对软件需求说明书、设计说明书、软件源代码进行检查与分析。 动态测试:…

ideatomcat老是运行以前的项目_日“吞”150吨垃圾,禅城集中式餐厨垃圾处理项目启用...

12月9日,禅城区集中式餐厨垃圾处理项目正式投料试运行,该项目如今每天可处理150吨垃圾。这意味着禅城区将通过先进技术实现餐厨垃圾资源化、减量化、无害化处理。禅城区集中式餐厨垃圾处理项目位于佛山市南庄污水处理厂首期工程北侧,禅港路西…

java怎么知道上传文件是否成功_文件包含漏洞之——tomcat CVE-2020-1938漏洞复现

这个漏洞是今年2月份出现的,他的影响范围也是非常广的。2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938),这个漏洞是由于Tomcat AJP协…

css word-wrap_CSS中分词“ break-all”和“ break-word”的值之间的差异

css word-wrapDefinition: 定义: What is the most fundamental element that comes to mind when you are considering to develop a web page? Words! If that was your answer, then pat yourself because you are already aware of what we are going to disc…

Android Studio apk 打包流程

1.Build -> Generate Signed APK...,打开如下窗口 2.假设这里没有打过apk包,点击Create new,窗口如下 这里只要输入几个必要项 Key store path(生产key文件的保存路径 ) Key store password(key 存储密码…

【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现

分类:C#、Android、VS2015; 创建日期:2016-02-21 一、简介 实际上,对于布局文件中的View来说,大多数情况下,Android都会自动保存这些状态,并不需要我们都去处理它。这一节仍以GridView为例&…

html---textarea初始化时就有个table空格以及tab键操作无效

1 初始化时就有一个tab空格这是由于<textarea></textarea>之间的内容不为空的原因&#xff0c;包含空格和换行&#xff0c;否则浏览器会觉得空格或者换行都是文本域的内容。因此书写时需将<textarea></textarea>紧靠在一起。2 tab键对textarea操作无效…

android decorView详解

摘要 一、DecorView为整个Window界面的最顶层View。 二、DecorView只有一个子元素为LinearLayout。代表整个Window界面&#xff0c;包含通知栏&#xff0c;标题栏&#xff0c;内容显示栏三块区域。 三、LinearLayout里有两个FrameLayout子元素。 (20)为标题栏显示界面。只有一个…

3dmax批量导入obj_ArcGIS 与 3DMax 结合建模

整体技术思路是将项目区二维的CAD测绘底图&#xff0c;通过整理导入到3DMax中&#xff0c;根据CAD底图为基础&#xff0c;绘制三维数字模型。利用Photoshop 平面图像处理软件&#xff0c;对现场采集的照片进行修整&#xff0c;为三维模型制作表面贴图。最终把贴好材质的三维楼体…

字符串乘一个数_【思维拓展】三位数乘两位数,构造最大积和最小积

前面袁老师给大家讲了一个重要结论&#xff0c;并运用这个结论来解决问题&#xff0c;构造两位数乘两位数最大积和最小积的问题。今天&#xff0c;更进一步&#xff0c;三位数乘两位数中&#xff0c;如何构造最大积和最小的积&#xff1f;【问题引入】用9、8、6、5、4这五个数字…

ios 微信支付

服务器签名版本 官方已经是建议使用服务器签名来接入微信支付&#xff0c;实际上从安全上考虑&#xff0c;确实是每个客户端不应该知道RAS密钥&#xff0c;也不需要每个客户端都写一遍签名的算法。 服务端接入流程文档&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/app.…

macos可以升级到指定版本吗_承装承修承试可以跨级升级吗?

在建筑行业&#xff0c;通常我们所说的承装承修承试&#xff0c;也就是指承装(修、试)电力设施许可证。承装(修、试)电力设施许可证的功能作用相当于建筑资质&#xff0c;企业需要办理许可证后才能承接电力设施的安装、维护、调试等工程项目。承装(修、试)电力设施许可证可以办…

一个事物两个方面的对比举例_顶管施工也有讲究,两个方面一个个来

顶管施工其实就是我们平时说的不开挖或者非开挖施工啦&#xff0c;其原理是借助于主顶油缸及管道间、中继间等推力&#xff0c;把工具管或掘进机从工作坑内穿过土层一直推进到接收坑内吊起。管道紧随工具管或掘进机后&#xff0c;埋设在两坑之间。为了响应中央的号召&#xff1…

SQLServer中的死锁的介绍

简介 什么是死锁&#xff1f; 我认为&#xff0c;死锁是由于两个对象在拥有一份资源的情况下申请另一份资源&#xff0c;而另一份资源恰好又是这两对象正持有的&#xff0c;导致两对象无法完成操作&#xff0c;且所持资源无法释放。 什么又是阻塞&#xff1f; 阻塞是由于资源不…

解析取值_圆锥曲线——高中解析几何全归纳

这是一系列文章&#xff0c;我将在接下来了80多天&#xff0c;尽力把理科比较难的大题题型全部归纳一下然后在最后我会告诉做解析几何的窍门&#xff0c;让你的解析几何不再没有头绪&#xff0c;拿到既可做全文干货&#xff0c;不掺水&#xff0c;可以说总结了解析几何中你能遇…

Tomcat版本与Servlet、JSP等版本的支持关系

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/garyxiong/blog/624619

微服务架构会和分布式单体架构高度重合吗

在最近的Microservices Practitioner Summit峰会上&#xff0c;来自Facebook的工程师Ben Christensen就目前正在普遍快速增长的分布式系统与二进制依赖关系的一种反面模式发表了自己的看法。\\Christensen谈到说&#xff0c;共享类库是整个服务运行过程中最需要的部分&#xff…

北京soul_Soul高智商情侣,机器人博士邂逅科技记者,跨越1200公里来相爱

她&#xff0c;是知名媒体的科技记者&#xff0c;平时往返于帝都各大互联网媒体峰会上&#xff0c;朋友圈都是各大互联网公司创始人大佬&#xff0c;用文字记录下互联网江湖的风云变化。他&#xff0c;是魔都top大学的工业机器人博士&#xff0c;像谢尔顿一样充满科学的奇思妙想…

Android-Dialog

Android-AlertView 我的地址&#xff1a;https://github.com/kongqw/Android-AlertView 开源地址&#xff1a;https://github.com/saiwu-bigkoo/Android-AlertView