您的位置:首页 > 数据库 > Redis

伟大的Redis:Redis学习资料荟萃

2018-01-02 16:24 232 查看
Redis, Memcache, Mysql区别
Redis 设计与实现
深入浅出的阐述了Redis的设计原理,非常棒的中文材料。
Redis研究(一)—简介
Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。
Redis研究(二)—准备
Redis研究(三)—字符串类型
Redis研究(四)—散列类型
散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型。
散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。
Redis研究(五)—列表类型
列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获取列表的一个片段。
Redis研究(六)—集合类型
一个集合类型(set)键可以存储至多2^32-1个字符串。
Redis研究(七)—如何判断set/get是否为原子操作
在做项目过程中,多个客户端可能同时读写Redis数据库,set和get命令是否为原子操作,关系到命令是否需要加锁机制的必要性。网上资料或者看书都说set和get等Redis命令为原子操作,但是程序里怎么测试呢?
Redis研究(八)—有序集合类型 1
sorted set为集合中的每个元素都关联了一个分数,所以可以获得分数最高或者最低的前N个元素,获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是他们的分数却可以相同。
Redis研究(九)—有序集合类型 2
Redis研究(十)—Redis事务和生存时间
Redis事务是一组命令的集合。事务同命令一样是Redis的最小执行单位,要么执行,要么不执行。
事务的原理是先将属于一个事务的命令发送给Redis,然后在让Redis依次执行这些命令。
Redis研究(十一)—数据持久化
Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中以某种形式同步到硬盘中,这一过程就是持久化。
Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。
Redis研究(十二)—主从复制
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。为了避免单点故障,我们希望将数据库复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上,Redis提供了复制(replication )功能可以自动实现同步的过程。
Redis研究(十三)—安全和通信协议
edis的作者Salvatore Sanfilippo曾经发表过Redis宣言,其中提到Redis以简洁为美。同样在安全层面Redis也没有做太多的工作。
Redis研究(十四)—管理工具
Redis研究(十五)—任务队列
通知的过程可以借助任务队列来实现。任务队列顾名思义,就是“传递任务的队列”。与任务队列进行交互的实体有两类,一类是生产者(producer),一类是消费者(consumer)。生产者会将需要处理的任务放入任务队列中,而消费者则不断地从任务队列中读入任务信息并执行。
Redis研究(十六)—发布/订阅模式
除了实现任务队列外,Redis还提供了一组命令可以让开发者实现“发布/订阅”(publish/subscribe)模式。“发布/订阅”模式同样可以实现进程间的消息传递,其原理是这样的:
发布/订阅”模式中包含两种角色,分别是发布者和订阅者。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。
Redis研究(十七)—SORT排序
Redis研究(十八)—管道(pipeline)
客户端和Redis使用TCP协议连接。不论是客户端向Redis发送命令还是Redis向客户端返回命令的执行结果,都需要经过网络传输,这两个部分的总耗时称为往返时延。根据网络性能不同,往返时延也不同,大致来说到本地回环地址(loop back address)的往返时延在数量级上相当于Redis处理一条简单命令(如LPUSH list 1 2 3)的时间。如果执行较多的命令,每个命令的往返时延累加起来对性能还是有一定影响的。
Redis研究(十九)—命令属性
Redis的不同命令拥有不同的属性,如是否是只读命令,是否是管理员命令等,一个命令可以拥有多个属性。在一些特殊情况下不同属性的命令会有不同的表现,下面来逐一介绍。
Redis数据丢失及解决
Redis的数据回写机制分同步和异步两种,
同步回写即SAVE命令,主进程直接向磁盘回写数据。在数据大的情况下会导致系统假死很长时间,所以一般不是推荐的。
异步回写即BGSAVE命令,主进程fork后,复制自身并通过这个新的进程回写磁盘,回写结束后新进程自行关闭。由于这样做不需要主进程阻塞,系统不会假死,一般默认会采用这个方法。
Redis命令及对应jedis操作(String)
redis全称是:REMOTE DICTIONARY SERVER,远程字典服务,它是以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。因为是内存读取,redis每秒可以读取数十万的健值数据。
Redis 事务
Redis 提供的事务机制与传统的数据库事务有些不同,传统数据库事务必须维护以下特性:原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 持久性(Durability),简称ACID。
浅析Redis实现lock互斥访问资源
在高并发的应用中,很多时候我们需要对某些资源进行竞争访问,比如在很多人下载一个热门资源,就可能存在很多请求去修改某个资源的peer信息(就是保存了当前保种人的ip地址和端口号),需要保证某个请求修改peer信息的时候,不允许其他请求修改,否则就会出现数据覆盖的问题。但是Redis没有提供对数据的加锁,所以需要我们通过Redis提供的命令自己实现:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis