资讯专栏INFORMATION COLUMN

redis 使用入门 - 构件

mushang / 3376人阅读

摘要:对于那些这一点确实是个问题的应用,你可能需要使用的方案,而非。此外,还可考虑对存储数据进行压缩或解压缩,以处理时间换取。虽然支持虚拟内存,但是这个特性被开发者看做是一个失败,不赞成使用该特性。

Databases

Redis拥有与关系型数据库一样的基础概念。典型的使用场景就是将一个应用的所有数据归在一起,以与其他应用的数据区分开。
Redis中的数据库用数字作为标示符,默认数据库的标示为0。使用下面的命令选择具体的数据库:

select 
Commands, Keys and Values

在Redis中,key可以包含strings, hashes, lists, sets, sorted sets, bitmaps以及hyperloglogs。但就目前来说,知道key看起来像 "users:leto" 就够了。其中leto是用户名,冒号没有任何特殊含义,但就Redis而言,使用分隔符是一种常见的组织key的方式。

value可以是任何东西,字符串、数字、或序列化后的对象(例如:xml、json或其他格式)。多数情况下,Redis会把它们当字节数组对待,而不会关心它们具体是什么。

往Redis存入一个键值对:

set  
# 示例
set users:leto "{"name": "leto", "planet": "dune", "likes": ["spice"]}"

根据key读取值:

get users:leto
Querying

Redis不支持对值进行查询,比如查询居住在dune星球上的用户。因为Redis从不需要去读取或理解存储的值,所以值才可以是任何东西。记住这点有助于我们在这个新世界中将心思放在考虑如何建模上。

Memory and Persistence

Redis是内存持久存储(in-memory persistent store)。说到持久化,默认情况下,Redis根据有多少key已经变化来决定是否需要对数据库做快照并保存至磁盘。你可以为它配置这样的快照策略:如果X个key发生了变化,就每Y秒保存一次数据库。默认策略为,如果1000个或更多的key发生了变化,就每60秒保存一次快照;如果9个或更少的key发生变化,就每15分钟做一次。

除了定时快照存储,Redis还可以运行在append模式(append mode)。任何时候,只要key发生了变化,磁盘上一个只可追加的(append-only)文件就会被更新。在一些情况下,丢失60秒的数据以换得性能是可接受的,因为可能会发生硬件或软件失败。但在一些情况下,这样的丢失又是不可接受的。Redis给我们提供了这些选择。第三种选择就是让slave节点去做持久化工作。

说到内存,Redis将所有数据保持在内存中。这就意味着运行Redis的成本比较高,毕竟RAM仍然是服务器硬件中最昂贵的部分。

一些开发者已经对数据会占用多小的空间失去了感觉,莎士比亚的所有作品大概占用5.5M,压缩后降至2。至于可伸缩性(scaling),其他方案趋向受限于IO或CPU(IO- or CPU-bound)。哪个限制 (RAM or IO) 将需要你扩展出更多的机器实际上取决于你数据的类型和你正在任何存储和查询它。除非你正在存储大的多媒体文件,否则保存数据在内存中很可能不是什么问题。对于那些这一点确实是个问题的应用,你可能需要使用IO-bound的方案,而非memory-bound。

此外,还可考虑对存储数据进行压缩或解压缩,以处理时间换取RAM。

Redis虽然支持虚拟内存,但是这个特性被Redis开发者看做是一个失败,不赞成使用该特性。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61771.html

相关文章

  • React 可视化开发工具 Shadow Widget 非正经入门(之一:React 三宗罪)

    摘要:前言非正经入门是相对正经入门而言的。不过不要紧,正式学习仍需回到正经入门的方式。快速入门建议先学会用拼文写文档注册一个账号,把库到自己名下,然后用这个库写自己的博客,参见这份介绍。会用拼文写文章,相当于开发已入门三分之一了。 本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点,既作为用户手册的补充,也从更本质角度帮助大家理解 Shadow Widget 为什么这...

    dongxiawu 评论0 收藏0
  • React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)

    摘要:本篇解释中类的控制指令,与指令式界面设计相关。本专栏历史文章介绍一项让可以与抗衡的技术可视化开发工具非正经入门之一三宗罪可视化开发工具非正经入门之二分离界面设计可视化开发工具非正经入门之三双源属性与数据驱动可视化开发工具非正经入门之四 本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点。本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面...

    pinecone 评论0 收藏0

发表评论

0条评论

mushang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<