redis实战笔记(1)

第1章 初识Redis

本章主要内容

1.Redis与其他软件的相同之处和不同之处

2.Redis的用法

3.使用Python示例代码与Redis进行简单的互动

4.使用Redis解决实际问题

Redis是一个远程内存数据库, 它不仅性能强劲, 而且还具有复制特性以及为解决问题而生的独一无二的数据模型。 Redis提供了 5种不同类型的数据结构, 各式各样的问题都可以很自 然地映射到这些数据结构上: Redis的数据结构致力于帮助用户解决问题, 而不会像其他数据库那样, 要求用户扭曲问题来适应数据库。 除此之外, 通过复制、 持久化( persistence) 和客户端分片( client-side sharding) 等特性, 用户可以很方便地将Redis扩展成一个能够包含数百GB数据、 每秒处理上百万次请求的系统。

笔者第一次使用Redis是在一家公司里面, 这家公司需要对一个保存了 6万个客户联系方式的关系数据库进行搜索, 搜索可以根据名字、 邮件地址、 所在地和电话号码来进行, 每次搜索需要花费10~15秒的时间。 在花了一周时间学习 Redis的基础知识之后, 我使用Redis重写了一个新的搜索引 擎, 最终这个新的搜索系统不仅可以根据名字、 邮件地址、所在地和电话号码等信息来过滤和排序客户联系方式, 并且每次操作都可以在50毫秒之内完成, 这比原来的搜索系统足足快了 200 倍。

1.1 Redis简介

Redis是一个速度非常快的非关系数据库( non-relational database) , 它可以存储键( key) 与5种不同类型的值( value) 之间的映射( mapping) , 可以将存储在内存的键值对数据持久化到硬盘, 可以使用复制特性来扩展读性能, 还可以使用客户端分片①来扩展写性能, 接下来的几节将分别介绍Redis的这几个特性。

1.1.1 Redis与其他数据库和软件的对比

如果你熟悉关系数据库, 那么你肯定写过用来关联两个表的数据的SQL查询。 而Redis则属于人们常说的NoSQL数据库或者非关系数据库: Redis不使用表, 它的数据库也不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。

memcached对比

两者都可用于存储键值映射, 彼此的性能也相差无几, 但是Redis能够自 动以两种不同的方式(AOF和?)将数据写入硬盘, 并且Redis除了能存储普通的字符串键之外, 还可以存储其他4种数据结构, 而memcached只能存储普通的字符串键。

这些不同之处使得Redis可以用于解决更为广泛的问题, 并且既可以用作主数据库( primary database) 使用, 又可以作为其他存储系统的辅助数据库( auxiliary database) 使用。

表1-1 一些数据库和缓存服务器的特性与功能

1.1.2 附加特性

在使用类似Redis这样的内存数据库时, 一个首先要考虑的问题就是“当服务器被关闭时, 服务器存储的数据将何去何从呢?

”Redis拥有两种不同形式的持久化方法, 它们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘:

第一种持久化方法为时间点转储( point-in-timedump) , 转储操作既可以在“指定时间段内有指定数量的写操作执行”这

一条件被满足时执行, 又可以通过调用两条转储到硬盘( dump-todisk) 命令中的任何一条来执行;

第二种持久化方法将所有修改了数据库的命令都写入一个只追加( append-only) 文件里面, 用户可以根据数据的重要程度, 将只追加写入设置为从不同步( sync) 、 每秒同步一次或者每写入一个命令就同步一次。 我们将在第4章中更加深入地讨论这些持久化选项。

另外, 尽管Redis的性能很好, 但受限于Redis的内存存储设计, 有时候只使用一台Redis服务器可能没有办法处理所有请求。 因此, 为了扩展Redis的读性能, 并为Redis提供故障转移( failover) 支持,

Redis实现了主从复制特性: 执行复制的从服务器会连接上主服务器, 接收主服务器发送的整个数据库的初始副本( copy) ; 之后主服务器执行的写命令, 都会被发送给所有连接着的从服务器去执行, 从而实时地更新从服务器的数据集。 因为从服务器包含的数据会不断地进行更新, 所以客户端可以向任意一个从服务器发送读请求, 以此来避免对主服务器进行集中式的访问。 我们将在第4章中更加深入地讨论Redis从服务器。


时间: 2024-08-10 08:35:12

redis实战笔记(1)的相关文章

redis实战笔记(3)-第3章 Redis命令

第3章 Redis命令 本章主要内容 字符串命令. 列表命令和集合命令 散列命令和有序集合命令 发布命令与订阅命令 其他命令 在每个不同的数据类型的章节里, 展示的都是该数据类型所独有的. 最具代表性的命令. 首先让我们来看看, 除了GET和SET之外, Redis的字符串还支持哪些命令. 3.1 字符串 在Redis里面, 字符串可以存储以下3种类型的值. 字节串( byte string) . 整数. 浮点数. 除了自 增操作和自 减操作之外, Redis还拥有对字节串的其中一部分内容进行读

redis实战笔记(2)-第2章 使用 Redis构建Web应用

第2章 使用 Redis构建Web应用 本章主要内容 1.登录cookie 2.购物车cookie 3.缓存生成的网页 4.缓存数据库行 5.分析网页访问记录 本章的所有内容都是围绕着发现并解决Fake Web Retailer这个虚构的大型网上商店来展开的, 这个商店每天都会有大约500万名不同的用户, 这些用户会给网站带来1亿次点击, 并从网站购买超过10万件商品. 我们之所以将Fake Web Retailer的几个数据量设置得特别大, 是考虑到如果可以在大数据量背景下顺利地 章列举的所有

redis实战笔记(4)-第4章 数据安全与性能保障

本章主要内容 4.1 将数据持久化至硬盘 4.2 将数据复制至其他机器 4.3 处理系统故障 4.4 Redis事务 4.5 非事务型流水线( non-transactional pipeline) 4.6 诊断性能问题 1.本章首先会介绍Redis的各个持久化选项, 这些选项可以让用户将自己的数据存储到硬盘上面. 2.接着本章将介绍如何通过 Redis 的复制特性, 把不断更新的数据副本存储到附加的机器上面, 从而提升系统的性能和数据的可靠性. 3. 之后本章将会说明同时使用复制和持久化的好处

redis实战笔记

3.1 字符串命令 3.2 列表命令 3.3 集合命令 3.4散列命令 3.5有序集合命令 3.6发布与订阅命令 3.7其他命令 3.7.1 排序 3.7.2键的过期时间 原文地址:https://www.cnblogs.com/goobai/p/8669075.html

Redis实战阅读笔记——开始

Redis实战这本书,看完以后最大的不是redis本身的东西,而是作者面对实际问题的分析而给出的设计方案,可以看成NoSql设计的应用.个人从这方面收获很多,至于Redis本身的东西,这个就花一两个小时就可以知道大致是怎么一回事了.具体API就直接查查就OK.关键是怎么用,这才是灵感创造所在,看看别人解决问题的思路,学习学习哈.

Redis实战阅读笔记——第一章

Redis 实战 中文版 的20-21页看的人郁闷死了,最后看英文版才明白意思,哎,我理解能力差成这样了 其中,图 1-12 有错误,草,这个是英文版的错--应该是group:programming

【读书笔记】Redis实战 中文.pdf

/Users/baidu/Documents/Data/Interview/存储-Nosql-Redis-消息队列/Redis实战 中文 先看第二章 数据类型及操作 Redis 的作者 antirez 曾笑称 Redis 为一个数据结构服务器(data structures server),我认为这 是一个非常准确的表述,Redis 的所有功能就是将数据以其固有的几种结构来保存,并提供 给用户操作这几种结构的接口. 一些操作:set, get, setnx, setex, setrange $

Redis实战 | 持久化、主从复制特性和故障处理思路

前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Redis简易教程Redis实战 | 5种Redis数据类型详解 Redis的两种持久化方式 经常有面试官会问:Redis数据存储在内存中,万一断电了怎么办呢? 不要慌,这个其实就是在问Redis的持久化策略啦.我们知道,保存在内存中的数据,在服务重启或者是机器挂掉之后是会丢失的.而硬盘中的数据是不会丢

Redis学习笔记

Redis学习笔记:Redis是什么?redis是开源BSD许可高级的key-vlue存储系统可以用来存储字符串哈希结构链表.结构.集合,因此常用来提供数据结构服务. redis和memcache相比的独特之处:1.redis可以用来做存储,而memcache是用来做缓存 这个特点主要因为其有"持久化"的功能.2.存储的数据有"结构",对于memcache来说,存储的数据只有1种类型"字符串"而 redis则可以存储字符串.链表.哈希机构.集合.