Redis中的五种数据类型简介

上篇文章我们介绍了如何在Linux中安装Redis,本文我们来了解下Redis中的五种数据类型。

本文是Redis系列的第二篇文章,了解前面的文章有助于更好的理解本文:


1.Linux上安装Redis


五大数据类型介绍

redis中的数据都是以key/value的形式存储的,五大数据类型主要是指value的数据类型,包含如下五种:

STRING

STRING是redis中最基本的数据类型,redis中的STRING类型是二进制安全的,即它可以包含任何数据,比如一个序列化的对象甚至一个jpg图片,要注意的是redis中的字符串大小上限是512M。

LIST

LIST是一个简单的字符串列表,按照插入顺序进行排序,我们可以从LIST的头部(LEFT)或者尾部(RIGHT)插入一个元素,也可以从LIST的头部(LEFT)或者尾部(RIGHT)弹出一个元素。

HASH

HASH类似于Java中的Map,是一个键值对集合,在redis中可以用来存储对象。

SET

SET是STRING类型的无序集合,不同于LIST,SET中的元素不可以重复。

ZSET

ZSET和SET一样,也是STRING类型的元素的集合,不同的是ZSET中的每个元素都会关联一个double类型的分数,ZSET中的成员都是唯一的,但是所关联的分数可以重复。

OK,通过上面的介绍,相信小伙伴们对五大数据类型都有一个大致的认识了,接下来我们就来看看这五种数据类型要怎么操作。

key相关的命令

由于五大数据类型的数据结构本身有差异,因此对应的命令也会不同,但是有一些命令不管对于哪种数据类型都是存在的,我们今天就先来看看这样一些特殊的命令。

首先通过redis-server redis.conf命令启动redis,再通过redis-cli命令进入到控制台中,如下:

首先我们可以通过set命令插入一条记录:

127.0.0.1:6379> set k1 v1
OK

DEL命令

看到OK表示插入成功。通过DEL命令我们可以删除一个已经存在的key,如下:

127.0.0.1:6379> DEL k1
(integer) 1

看到(integer) 1表示数据已经删除成功。

DUMP命令

DUMP命令可以序列化给定的key,并返回序列化之后的值:

127.0.0.1:6379> DUMP k1
"\x00\x02v1\b\x00\xe6\xc8\\\xe1bI\xf3c"

EXISTS命令

EXISTS命令用来检测一个给定的key是否存在,如下:

127.0.0.1:6379> EXISTS k1
(integer) 1
127.0.0.1:6379> EXISTS k2
(integer) 0
127.0.0.1:6379>

上面的运行结果表示k1存在而k2不存在。

TTL命令

TTL命令可以查看一个给定key的有效时间:

127.0.0.1:6379> TTL k1
(integer) -1
127.0.0.1:6379> TTL k2
(integer) -2

-2表示key不存在或者已过期;-1表示key存在并且没有设置过期时间(永久有效)。当然,我们可以通过下面的命令给key设置一个过期时间:

EXPIRE命令

EXPIRE命令可以给key设置有效期,在有效期过后,key会被销毁。

127.0.0.1:6379> EXPIRE k1 30
(integer) 1
127.0.0.1:6379> TTL k1
(integer) 25
127.0.0.1:6379>

30表示30秒,TTL k1返回25表示这个key的有效期还剩25秒。

PERSIST命令

PERSIST命令表示移除一个key的过期时间,这样该key就永远不会过期:

127.0.0.1:6379> EXPIRE k1 60
(integer) 1
127.0.0.1:6379> ttl k1
(integer) 57
127.0.0.1:6379> PERSIST k1
(integer) 1
127.0.0.1:6379> ttl k1
(integer) -1

PEXPIRE命令

PEXPIRE命令的功能和EXPIRE命令的功能基本一致,只不过这里设置的参数是毫秒:

127.0.0.1:6379> PEXPIRE k1 60000
(integer) 1

PTTL命令

PTTL命令和TTL命令基本一致,只不过PTTL返回的是毫秒数:

127.0.0.1:6379> PTTL k1
(integer) 25421

KEYS 命令

KEYS命令可以获取满足给定模式的所有key,比如:

127.0.0.1:6379> KEYS *
1) "k3"
2) "k2"
3) "k1"

KEYS *表示获取所有的KEY,*也可以是一个正则表达式。

OK,key相关的命令我们就介绍这么多,当然还有很多其他的,小伙伴们可以参考官方文档http://www.redis.cn/commands.html。小伙伴在看官方文档时,有什么问题欢迎留言讨论。

原文发布于微信公众号 - 玩转JavaEE(gh_d1ca11234a30)

原文发表时间:2018-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WebApiClient

WebApiClient基础

如果接口IMyWebApi有多个方法且都指向同一服务器,可以将请求的域名抽出来放到HttpHost特性。

74600
来自专栏Java 技术分享

一篇 JPA 总结

下面是 JDBC 在 Java 应用和数据库之间的位置,充当着一个中间者,供 Java 应用程序访问所有类别的数据库,建立一个标准

15420
来自专栏木宛城主

迁移TFS,批量将文档导入SharePoint 2013 文档库

一、需求分析 公司需要将存在于旧系统(TFS)所有的文档迁移至新系统(SharePoint 2013)。现已经将50G以上的文档拷贝到SharePoint ...

230100
来自专栏大内老A

WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效

本篇文章来源于几天前一个朋友向我咨询的问题。问题是这样的,他说他采用ASP.NET应用程序的方式对定义的WCF服务进行寄宿(Hosting),并使用配置的方式对...

20770
来自专栏大内老A

WCF技术剖析之十七:消息(Message)详解(下篇)

《WCF技术剖析(卷1)》自出版近20天以来,得到了园子里的朋友和广大WCF爱好者的一致好评,并被卓越网计算机书店作为首页推荐,在这里对大家的支持表示感谢。同时...

24350
来自专栏大内老A

[WCF权限控制]WCF自定义授权体系详解[实例篇]

在《原理篇》中,我们谈到WCF自定义授权体系具有两个核心的组件:AuthorizationPolicy和ServiceAuthorizationManager,...

22070
来自专栏Jackson0714

03.如何实现一个遥控器-命令模式

37970
来自专栏更流畅、简洁的软件开发方式

数据访问函数库 for ado.net2.0

前言 源代码和调用演示下载:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html 数据访问函...

20270
来自专栏Core Net

ASP.NET Core 2.0 : 八.图说管道,唐僧扫塔的故事

36050
来自专栏大内老A

从Trace和Debug来看条件编译(Conditional Compilation)

条件编译,顾名思义,就是根据在编译时指定的条件决定最后需要编译的代码。条件编译是我们可以针对某些特性的环境编写相应的代码,比如有写的代码只需要在Debug模式下...

243100

扫码关注云+社区

领取腾讯云代金券