redis 使用入门 - 构件

Databases

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

select <number of a database>

Commands, Keys and Values

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

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

往Redis存入一个键值对:服务器

set <key> <value>
# 示例
set users:leto '{"name": "leto", "planet": "dune", "likes": ["spice"]}'

根据key读取值:app

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分钟作一次。code

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

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

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

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

Redis虽然支持虚拟内存,可是这个特性被Redis开发者看作是一个失败,不同意使用该特性。

相关文章
相关标签/搜索