Redis 学习笔记2 – 基础知识

1. 基础知识

Redis 通常被描述为一个“键值对”方式的存储的内存型数据库。然而它不仅仅如此,它也可以把数据写到硬盘上用以持久化。

在 Redis 提供的五种不同的数据结构中,典型的是键值对结构。深刻理解这五种数据结构,它们的工作原理,它们提供的方法,以及怎样用这些数据结构去建模,是学习理解 Redis 的关键。 首先要弄明白这些数据结构的具体含义。

1.1 数据库(Databases)

Redis也有数据库的概念,数据库是包含一组数据的集合。

在 Redis 中,通过一个数字来标识数据库,默认开始标识是 0。 如果你想切换到不同的数据库,你可以通过使用 select 命令。输入 select 1。Redis 会响应一个 OK 。

127.0.0.1:6379> select 1  OK  127.0.0.1:6379[1]> select 0  OK  127.0.0.1:6379> 

1.2 命令字,键和值(Commands, Keys and Values)

Redis 不单是一个键值对存储,其核心的五种数据结构至少都有一个 key 和一个 value。理解 key 和 value 是非常重要的。

Key 定义了如何标识数据块。 Values 表示 key指向的 实际数据。Values 可以是任何类型,可以存储字符串,整数,或序列化对象(比如 JSON, XML )。

key 是看起来应该有像 users:leto 这样的格式,这样的一个 key 一看就知道这条数据中有一个叫 leto 的用户的相关信息。冒号没什么意义,用符号分隔 key 是一般常用方式。

先看个例子:

  set users:leto '{"name": "leto", "planet": "dune", "likes": ["spice"]}'

set 是 命令字。然后是它的参数,一个key是 “users:leto ”,再后面是它的值。 set 可以理解为:设置,存储,写入。这里就是 将 users:leto 和后面的值关联起来,将来可以通过 这个key (即 users:leto ) 来读取到这个值。

那么,怎么读取呢?

get users:leto

get 是命令字,执行后会显示 users:leto 这个key 对应的 值。

1.3 查询(Querying)

对 Redis 来说,key 是全部,而 value 无所谓。或者,换个说法,Redis 不允许你直接查询对象的值,只能通过 key 去查找。 value 可以是任何类型 – Redis 根本不需要去理解他们。

基于此,我们来理解 Redis ,考虑它是否适合我们的数据建模,和它所适用的场景。

1.4 内存和持久化(Memory and Persistence)

1.快照 Redis 基于一定量 key 的变更,来触发对数据库进行快照,保存到硬盘上。默认情况下,Redis 会在每 60 秒,如果有 1000 及以上个 key 发生改变,将对数据快照保存。或每15分钟,即使少于9个 key 发生改变,也会把数据快照保存。

2.增量 Redis 支持增量模式。一旦 key 发生变化,一个增量包会更新到硬盘上。某些情况下,允许数据60秒的更新延迟,用以换取性能上的提升,是值得的,虽然有可能会发生硬件或软件异常,导致数据丢失。

3.将持久化任务分流到从服务器上 一种可选方案

1.5 总结

由于是内存型存储,所以,它会很快。 数据保存的方式是非实时的,确保具有更好的性能。 Redis 的 闪光点是它特别的数据结构。

由于 Redis 很快,我们无需慎重的考虑和它的交互次数,对于可以获得的高性能,多次查询的损失微不足道。

END