该文章是对Redis官方文档的翻译
字符串(Strings)
字符串是Redis值的最基础的类型。Redis字符串是二进制安全的,这意味着一个Redis字符串可以包含任何种类的数据,例如一个JPEG图像或者一个序列化的Ruby对象。
一个字符串值最多可以保存512M字节的内容。
你可以使用Redis的字符串做一些有趣的事情,例如你可以:
- 在使用命令INCR系列( INCR, DECR, INCRBY)命令时将字符串作为的原子计数器。
- 使用APPEND命令追加字符串。
- 将字符串作为GETRANGE 和 SETRANGE的随机访问向量。
- 在小空间里编码大量数据, 或者使用 GETBIT 和 SETBIT创建一个Redis支持的Bloom过滤器。
查看可用的字符串命令获得更多信息
列表(Lists)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)
LPUSH 命令插入一个新的元素导头部, 而 RPUSH插入一个新元素导尾部.当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。相似的,如果一个列表操作清空一个列表那么对应的key将被从key空间删除。这是非常方便的语义,因为他们被调用使用一个空列表完全就像他们被调用时使用一个不存在的键值(可以)做为参数。
一些类表操作和结果的例子:
LPUSH mylist a # 现在类表中是 "a"
LPUSH mylist b # 现在列表中是 "b","a"
RPUSH mylist c # 现在类表中是 "b","a","c" (这次RPUSH被使用)
一个列表最多可以包含 2[sup]32 - 1[/sup] 个元素 (4294967295, 每个列表超过40亿个元素)。
从时间复杂度的角度来看Redis列表的主要特征是在头和尾的元素插入和删除是固定时间,即便是数以百万计的插入。. 在列表的两端访问元素是非常快的但是如果你试着访问一个非常大的列表的中间的元素是很慢的,因为那是一个O(N)操作。
你可以用Redis列表做很多有趣的事情,比如你可以:
- 在一个社交网络中建立一个时间线模型,使用LPUSH 去添加新的元素到用户的时间线, 使用LRANGE去接收一些最近插入的元素。
- 你可以将 LPUSH 和 LTRIM 一起用去创建一个永远也不会超过指定元素数目的列表,但是记住是最后的N个元素。
- 列表能够被用来作为消息传递primitive[译注:不清楚表达的意思], 例如众所周知的用来创建后台工作的Resque Ruby库.
- 你可以使用列表做更多的事,这个数据类型支持许多命令,包括像BLPOP这样的阻塞命令。请查看 可获得的列表操作命令 以获得更多的信息。
集合(Sets)
Redis 集合(Set)是一个无序的字符串集合. 你可以以O(1)的时间复杂度 (无论集合中有多少元素时间复杂度都是常量)完成添加,删除,以及测试元素是否存在。
Redis 集合拥有令人满意的不允许包含相同成员的属性。多次添加相同的元素,最终在集合里只会有一个元素。
实际上说这些就是意味着在添加元素的时候无须检测元素是否存在。
一个Redis集合的非常有趣的事情是他支持一些服务端的命令从现有的集合出发去进行集合运算,因此你可以在非常短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。
一个集合最多可以包含 232 - 1 个元素(4294967295, 每个集合超过40一个元素).
你可以使用集合多很多有趣的事情,比如你能够:
- 你可以使用集合追踪一件(独一无二的)事情,想要知道所有访问一个博客文章的独立IP? 每次当你处理一个页面访问的事简单的使用SADD。你可以肯定重复的IP是不会被插入的。
- Redis 集合是很擅长表现关系的。你可以使用Redis集合创建一个tagging系统去表现每一个tag。接下来你能够使用SADD命令将有一个给定tag的所有对象的所有ID添加到一个用来展现这个特定tag的集合里。你想要同时有三个不同tag的所有对象的ID吗?使用SINTER就好了。
- 使用 SPOP 或者 SRANDMEMBER 命令你可以使用集合去随意的抽取元素。
- 查看 完整的集合命令列表 以获得更多的信息。
哈希(Hashes)
Redis Hashes是字符串字段和字符串值之间的映射,因此他们是展现对象的完美数据类型。 (例如:一个有名,姓,年龄等等属性的用户):
@cli
HMSET user:1000 username antirez password P1pp0 age 34
HGETALL user:1000
HSET user:1000 password 12345
HGETALL user:1000
一个带有一些字段(这里的一些意味着高达一百左右)的hash仅仅需要一块很小的空间存储,因此你可以存储数以百万计的对象在一个小的Redis实例中。
哈希主要用来表现对象,他们有能力存储很多对象,因此你可以将哈希用于许多其他的任务。
每一个哈希可以存储超过232 - 1 字段-值 对 (超过40亿).
查看 完整的哈希命令列表 以获得更多的信息。
有序集合(Sorted Sets)
Redis有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的没有成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。
使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。在有序集合中,你可以很快捷的访问一切你需要的东西:有序的元素,快速的存在性测试,快速访问集合的中间元素!
简而言之使用有序集合你可以做完成许多对性能有极端要求的任务,而那些任务使用其他类型的数据库真的是很难完成的。
使用有序集合你可以:
- 在一个大型的在线游戏中展示一个排行榜,在那里一旦一个新的分数被提交,你可以使用ZADD命令去更新它.你也可用使用 ZRANGE命令来得到顶级的用户,你还可以使用ZRANK命令根据用户名返回该用户在排行榜中的位次。同时使用ZRANK 和 ZRANGE 你可以显示和给定用户分数相同的所有用户。所有这些操作都非常的快速。
- 有序集合常常被用来索引存储在Redis中的数据。举个例子,如果你有许多的哈希(Hashes)来代表用户,你可以使用一个有序集合,这个集合中的元素的年龄字段被用来当做评分,而ID作为值。因此,使用 ZRANGEBYSCORE 命令,那是微不足道的并且能够很快的接收到给定年龄段的所有用户。
- 有序集合或许是最高级的Redis数据类型,因此花点时间查看 完整的有序集合命令列表 去发现你能用Redis做些什么。
分享到:
相关推荐
Redis 数据类型
2. **Redis数据类型及操作**:这是Redis的核心部分,包括五大数据类型: - **字符串(String)**:最基础的数据类型,支持设置、获取、增加、减少等操作。 - **哈希(Hash)**:用于存储键值对集合,适用于存储对象。 ...
这段代码是在 2009 年 Redis 首次发布时编写的,目的是让感兴趣的开发人员了解 Redis 的概念和数据类型。后来,在 2014 年 5 月,它被重新编写,以将其更新为现代 Redis,因为在引入示例时,Redis 缺少排序集、哈希...
### Redis 数据类型详解 Redis是一种高性能的键值存储系统,提供了多种数据结构的支持,使得它在不同的应用场景下都能够表现出色。接下来,我们将详细介绍Redis中的主要数据类型及其应用场景。 #### String 字符串...
redis Redis 数据类型.docx 来源:https://www.runoob.com/redis/redis-data-types.html
Redis 数据类型详细介绍
在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...
Redis 数据类型Redis支持五种数据类型:String(字符串)string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个
计算机后端-Java-java高手加薪课视频教程-08 Redis数据类型.mp4
4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...
Redis数据类型的Python包装器实现 Redis 数据类型的包装器,以便它们模仿 Python 中的数据类型。 需要 Redis 2.0+ 和最新版本的 redis-py。 为了获得最佳性能,包装器是惰性的,并使用直接Redis调用,例如: len ( ...
Redis 数据类型的详解 概要: Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string是redis最基本的类型,你可以理解成与...
Redis 数据类型是 Redis 存储数据的核心组成部分,它提供了丰富的数据结构,使 Redis 成为了一个功能强大的数据库系统。本文将详细介绍 Redis 支持的五种数据类型:String、Hash、List、Set 和 Zset(Sorted Set)。...
python 零基础学习篇
首先,Redis数据类型可以分为五种常用类型:string、hash、list、set、sorted_set。Redis自身是一个基于内存的存储系统,其中所有的数据都是采用key:value的形式存储的。key总是字符串类型,而value则根据数据类型的...
python 零基础学习篇
重塑差异在可能的情况下使用本机Redis数据类型,而不是单个哈希(例如,数组列表,对象的哈希)。 获取语法更像是访问常规对象(至少在异步/等待状态下)。 没有“同步”功能。 允许访问内部对象,例如内部Redis...
本文将深入探讨如何使用Java操作Redis的四种主要数据类型:字符串(String)、列表(List)、哈希(Hash)和集合(Set)。 首先,我们来看**字符串类型**(String)。在Redis中,字符串是最基础的数据类型,可以...
python 零基础学习篇