`
powersoft
  • 浏览: 199249 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
53a63413-d61c-321e-8dc6-5008e88923c6
Redis官方文档翻译和源...
浏览量:191981
社区版块
存档分类
最新评论

Redis官方文档(2)——数据类型初探

阅读更多
Redis3官方文档(2)
——数据类型初探


    字符串(Strings)
    字符串是Redis最基本的数据类型。Redis字符串是二进制安全的,也就是说,一个Redis字符串可以包含任意类型的数据,例如一张JPEG图像,或者一个序列化的Ruby对象。
    一个字符串最大为512M字节。
    你可以使用Redis的字符串类型做很多有意思的事情,例如,你可以:
  • 使用INCR命令族(INCR,DECR,INCRBY),将字符串作为原子计数器。
  • 使用APPEND命令追加字符串。
  • 使用GETRANGE和SETRANGE命令,使字符串作为随机访问向量(vectors)。
  • 编码大量数据到很小的空间,或者使用GETBIT和SETBIT命令,创建一个基于Redis的布隆(Bloom)过滤器。

    后续我们会详细介绍可用的字符串命令,也会详细介绍Redis数据类型的更多高级信息。

    列表(Lists)
    Redis列表仅仅是按照插入顺序排序的字符串列表。可以添加一个元素到Redis列表的头部(左边)或者尾部(右边)。
    LPUSH命令用于插入一个元素到列表的头部,RPUSH命令用于插入一个元素到列表的尾部。当这两个命令操作在一个不存在的键时,将会创建一个新的列表。同样,如果一个操作会清空列表,那么该键将会从键空间(key space)移除。这些是非常方便的语义,因为列表命令如果使用不存在的键作为参数,就会表现得像命令运行在一个空列表上一样。
    一些列表操作的例子结果:
LPUSH mylist a   # now the list is “a”
LPUSH mylist b   # now the list is “b”, ”a”
RPUSH mylist c   # now the list is “b”,”a”, ”c”(RPUSH was used this time)

    列表的最大长度是223-1个元素(4294967295,超过40亿个元素)。
    从时间复杂度的角度看,Redis列表主要的特性是支持以常量时间在列表的头和尾附近插入和删除元素,即使列表中已经插入了上百万的数据。访问列表两端的元素非常的快速,但是访问一个非常大的列表的中间却非常的慢,因为这是一个O(N)时间复杂度的操作。
    你可以使用Redis的列表类型做很多有意思的事情,例如,你可以:
  • 为社交网络时间轴(timeline)建模,使用LPUSH命令往用户时间轴插入元素,使用LRANGE命令获得最近事项。
  • 使用LPUSH和LTRIM命令创建一个不会超出给定数量元素的列表,只存储最近的N个元素。
  • 列表可以用作消息传递原语,例如,众所周知的用于创建后台任务的Ruby库Resque。
  • 你可以用列表做更多的事情,这种数据类型支持很多的命令,包括阻塞命令,如BLPOP。

    后续我们会详细介绍可用的列表命令,也会详细介绍Redis数据类型的更多高级信息。

    集合(Sets)
    Redis集合是没有顺序的字符串集合(collection)。可以在O(1)的时间复杂度添加、删除和测试元素存在与否(不管集合中有多少元素都是常量时间)。
    Redis集合具有你需要的不允许重复成员的性质。多次加入同一个元素到集合也只会有一个拷贝在其中。实际上,这意味着加入一个元素到集合中并不需要检查元素是否已存在。
    Redis集合非常有意思的是,支持很多服务器端的命令,可以在很短的时间内和已经存在的集合一起计算并集,交集和差集。
    你可以使用Redis的集合类型做很多有意思的事情,例如,你可以:
  • 你可以使用Redis集合追踪唯一性的事情。你想知道访问某篇博客文章的所有唯一IP吗?只要在每次页面访问时使用SADD命令就可以了。你可以放心,重复的IP是不会被插入进来的。
  • Redis集合可以表示关系。你可以通过使用集合来表示每个标签,来创建一个标签系统。然后你可以把所有拥有此标签的对象的ID通过SADD命令,加入到表示这个标签的集合中。你想获得同时拥有三个不同标签的对象的全部ID吗?用SINTER就可以了。
  • 你可以使用SPOP或SRANDMEMBER命令来从集合中随机抽取元素。

    后续我们会详细介绍可用的集合命令,也会详细介绍Redis数据类型的更多高级信息。

    哈希/散列(Hashes)
    Redis哈希是字符串字段(field)与字符串值之间的映射,所以是表示对象的理想数据类型(例如:一个用户对象有多个字段,像用户名,姓氏,年龄等等):
@cli
HMSET user:1000 username antirez password P1pp0 age 34
HGETALL user:1000
HSET user:1000 password 12345
HGETALL user:1000

    拥有少量字段(少量指的是大约100)的哈希会以占用很少存储空间的方式存储,所以你可以在一个很小的Redis实例里存储数百万的对象。
    由于哈希主要用来表示对象,对象能存储很多元素,所以你可以用哈希来做很多其他的事情。
    每个哈希可以存储多达223-1个字段值对(field-value pair)(多于40亿个)。
    后续我们会详细介绍可用的哈希命令,也会详细介绍Redis数据类型的更多高级信息。

    有序集合(Sorted sets)
    Redis有序集合和Redis集合类似,是非重复字符串集合(collection)。不同的是,每一个有序集合的成员都有一个关联的分数(score),用于按照分数高低排序。尽管成员是唯一的,但是分数是可以重复的。
    对有序集合我们可以通过很快速的方式添加,删除和更新元素(在和元素数量的对数成正比的时间内)。由于元素是有序的而无需事后排序,你可以通过分数或者排名(位置)很快地来获取一个范围内的元素。访问有序集合的中间元素也是很快的,所以你可以使用有序集合作为一个无重复元素,快速访问你想要的一切的聪明列表:有序的元素,快速的存在性测试,快速的访问中间元素!
总之,有序集合可以在很好的性能下,做很多别的数据库无法模拟的事情。
使用有序集合你可以:
    例如多人在线游戏排行榜,每次提交一个新的分数,你就使用ZADD命令更新。你可以很容易地使用ZRANGE命令获取前几名用户,你也可以用ZRANK命令,通过给定用户名返回其排行。同时使用ZRANK和ZRANGE命令可以展示与给定用户相似的用户及其分数。以上这些操作都非常的快。
    有序集合常用来索引存储在Redis内的数据。例如,假设你有很多表示用户的哈希,你可以使用有序集合,用年龄作为元素的分数,用用户ID作为元素值,于是你就可以使用ZRANGEBYSCORE命令很快且轻而易举地检索出给定年龄区间的所有用户了。
    有序集合或许是最高级的Redis数据类型,后续我们会详细介绍可用的有序集合命令,也会详细介绍Redis数据类型的更多高级信息。

    位图(Bitmaps)和超重对数(HyperLogLogs)
    Redis还支持位图和超重对数这两种基于字符串基本类型,但有自己语义的数据类型。
后续我们会详细介绍这些数据类型的更多高级信息。
===============================================================================
    大家好,我是阮威。华中科技大学,计算机软件专业硕士。毕业后加入腾讯,先后在腾讯电子商务部和无线游戏产品部工作,现供职于欢聚时代基础产品部。IT男,至今。对技术有强烈的热情,对技术以外的事物热情更高。
    我的座右铭是“呼喊移动人的移动连接,践行自由人的自由联合”。欢迎大家收听我的公众账号。


分享到:
评论

相关推荐

    Redis官方文档.zip_redis

    **Redis官方文档详解** Redis,全称Remote Dictionary Server,是一个开源的、支持网络的、键值存储系统。它通常被用作数据库、缓存和消息代理。Redis以其高性能、丰富的数据结构以及简单易用的API而闻名。此文档将...

    spring data redis 官方文档

    - **对象到 Hash 映射**:支持将对象映射到 Redis 的 Hash 数据结构中,便于存储复杂数据类型。 - **键空间操作**:提供了对键空间的高级操作支持,如查询、过期时间设置等。 - **次级索引**:支持定义次级索引来...

    最新版redis官方中文说明文档(2016)

    文档中,首先会介绍Redis的基本概念,包括其工作原理、数据类型以及与传统数据库的区别。Redis支持的数据类型有字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets),这些...

    Redis 中文文档

    Redis 的官方文档非常详尽,包含了从基础概念到高级特性的详细介绍。下面将根据提供的部分内容,对Redis中的关键知识点进行解析。 #### 三、键空间通知(keyspace notification) 键空间通知是Redis为客户端提供的...

    redis文档 redis api redis集群配置官方文档中文版本

    从网上抓取的redis文档,中文版本!!提供给在没有网络下的朋友查询参考使用!!

    redis官方文档中文版

    2. **安装与配置**:文档将指导用户如何在不同的操作系统上安装Redis,并介绍配置文件的各个选项,包括端口设置、内存管理、日志记录、客户端限制等。 3. **数据类型**: - **字符串(Strings)**:最基本的键值对...

    redis介绍文档学习

    2. **数据类型丰富**:除了基本的键值对之外,Redis还支持字符串(Strings)、列表(Lists)、哈希(Hashes)、集合(Sets)以及有序集合(Ordered Sets)等多种数据结构。 3. **持久化**:尽管Redis的主要存储介质是内存,但...

    redis官方中文说明文档(HTML版本)

    在数据类型部分,文档会详细阐述Redis中的五大数据结构:字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。字符串是最基础的类型,可以存储简单的文本或二进制数据。哈希允许存储...

    redis使用文档手册

    1. **Redis的数据类型**: - **String**:基本的数据类型,可以存储字符串、整数或浮点数,常用于简单的键值对存储。 - **List**:有序的字符串列表,可以通过索引进行插入和获取元素,常用于实现消息队列。 - **...

    redis说明文档使用说明

    redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明

    Redis 中文文档.pdf

    Redis 中文文档 Redis 是一个开源的、基于内存的数据结构存储系统,提供了字符串、哈希表、列表、集合、有序集合等多种数据结构,可以用来实现各种不同的应用场景。本文档是 Redis 的中文文档,全面介绍了 Redis 的...

    redis帮助文档之geo.md

    redis帮助文档之geo

    php redis 中文API和redis chm文档

    它支持丰富的数据类型,包括字符串、哈希、列表、集合、有序集合等,这使得Redis在处理各种应用场景时非常灵活。PHP Redis扩展是PHP与Redis进行交互的工具,允许开发者在PHP代码中直接操作Redis数据库。 在提供的...

    NoSQL之Redis 101文档,数据类型图文并茂很详细

    对于有兴趣进一步学习 Redis 的开发者而言,官方文档和其他高级资源是极好的学习渠道。 对于缓存使用场景而言,你可能不希望缓存中的项目永久存在。在 Redis 中,任何项目都可以设定在一定时间后过期,或者根据其...

    运维监控redis集群的工具——分享自_2018年9月1日_谷阳_首汽_DBA1

    Redis 集群是分布式数据存储的一种解决方案,它通过分片(Sharding)技术将数据分布在多个节点上,以提高可扩展性和容错性。在 Redis 集群中,数据是按照槽(slot)来分布的,共有16384个槽,这些槽可以在各个节点...

    REDIS命令文档网页离线版

    首先,Redis支持多种数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。这些数据类型的灵活运用可以满足多种场景的需求。例如,字符串常用于存储简单的键值,哈希则适合...

    Redis 中文文档-01061629.pdf

    Redis 中文文档 Redis 是一种开源的、基于内存的数据存储系统,可以用作数据库、缓存和消息队列等。以下是 Redis 中文文档的详细知识点: 键空间通知(Key Space Notification) 键空间通知使得客户端可以通过...

    redis安装使用文档

    以上代码展示了如何连接Redis,设置和获取键值,操作列表,以及判断数据类型。Redis还支持哈希、集合、有序集合等多种数据结构,可以根据实际需求进行更复杂的数据操作。 总的来说,Redis的安装与使用并不复杂,只...

    redis文档

    标题中提到的“redis文档”可能是指 Redis 的官方文档或相关的学习资料,这些文档通常会涵盖 Redis 的安装、配置、命令使用、最佳实践等内容。通过学习 Redis 文档,你可以了解到如何搭建 Redis 服务器、如何进行...

Global site tag (gtag.js) - Google Analytics