该文章是对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做些什么。
分享到:
相关推荐
3.Redis数据类型之List类型
Redis实战_Redis实战中文完整版,适合新手入门学习。本文档章节全面,不会有遗落章节。主要包括Redis快速入门、Redis数据类型及操作、Redis常用
Redis数据类型以及指令整理, 1. string 2. list 3. SET集合 4. sorted set 5. hash
在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...
Redis 数据类型Redis支持五种数据类型:String(字符串)string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个
redis 数据类型详解 以及 redis适用场景场合 - 血泪汗KG
redis数据类型及应用场景 Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 一、string 简介:Strings数据类型是最常用、简单的key-value类型,...
计算机后端-Java-java高手加薪课视频教程-08 Redis数据类型.mp4
数据类型详解 以及 redis适用场景场合 数据类型详解 以及 redis适用场景场合
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis
NULL 博文链接:https://keshion.iteye.com/blog/1294851
他们之间差别在于有序集合中每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序不能重复是索引为唯一的,数据却
Redis数据类型的Python包装器实现 Redis 数据类型的包装器,以便它们模仿 Python 中的数据类型。 需要 Redis 2.0+ 和最新版本的 redis-py。 为了获得最佳性能,包装器是惰性的,并使用直接Redis调用,例如: len ( ...
Redis 数据类型的详解 概要: Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string是redis最基本的类型,你可以理解成与...
2、Redis的每个数据类型是处理不同业务场景而诞生,基本数据类型为5种,从redis5.0版发布后新增了Stream数据类型,如下思路图: 3、其中跳表为插入,删除,查询比较快的动态数据结构,跳表是一个值有序的链表建立...
python 零基础学习篇
python 零基础学习篇