redis学习总结(一)

1. 目的


学习任何一门技术都是有原因的,个人还是比较带着问题去学习。然后通过学习对每个问题进行回答,这样也就对此技术达到学习目的,只有真正理解,才可以在我们以后的项目中大胆放心的使用。

问题列表:

(1). redis是什么,何为redis?

(2). 为什么要使用redis,能帮我们解决什么问题,能做什么?

(3). redis的优缺点?

(4). redis的安装、配置?

(5). redis中有哪些技术点?

(6). redis如何在项目中使用,项目实战?

(7). 技术进阶,redis如何实现,实现原理,源码分析,技术架构?

(8). 参考资料


2. 回答问题

针对第1节中提出的问题,边学习边分别进行解答。

2.1 redis是什么,何为redis?

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,
并提供多种语言的API。
从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

redis是一个key-value存储系统。与Memcached类似,它支持存储的value类型相对更多,包括5种数据类型。
redis和memcached一样,为了保证效率,数据都是缓存在内存中。redis会周期性的把更新的数据写入
磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

redis提供五种数据类型:string,hash,list,set及zset(sorted set)。


redis的版本

2012年08月02日,Redis 2.4.16 小更新版本 NoSQL。 
2012年08月31日 ,Redis 2.4.17 小更新版本 NoSQL。
2012年11月7日 Redis 2.6.3 发布,高性能K/V服务器。
2013年4月30日Redis 2.6.13 发布,高性能K/V服务器。
2013年11月25日,Redis 2.8.1发布。
2015年2月,Redis3.0.0发布(支持集群)。

2.2 为什么要使用redis,能帮我们解决什么问题,能做什么?

redis是NoSQL数据库;

redis是memcached+MySql的升级版;

NoSQL主要用于解决以下几种问题
1. 少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,
实际这正是Redis最主要的适用场景。
2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。
3. 这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心的设计,
节点之间通过gossip方式传递集群信息,数据保证最终一致性,后者是一个中心化的方案设计,
通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,
将随机写优化为顺序写,提高写入性能。
4. Schema free,auto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的,直接存储json格式数据,
并且支持auto-sharding等功能,比如mongodb。

redis特点
1. Redis使用最佳方式是全部数据in-memory。
2. Redis更多场景是作为Memcached的替代者来使用。
3. 当需要除key/value之外的更多数据类型支持时,使用Redis更合适。
4. 当存储的数据不能被剔除时,使用Redis更合适。

2.3 redis的优缺点?

优点

与memcached+Mysql比较,redis的优点:
非常丰富的数据结构,且这些数据结构的操作都是原子性的;
高速读写,memcached提供cas命令,可以保证多个并发访问操作同一份数据的一致性;
mysql使用了锁,来实现数据一致性;redis没有使用cas命令和锁,redis提供了事物功能,可以保证一串命令的原子性。

缺点

1. 持久化

redis直接把数据存储在内存中,可以通过两种方式持久化。
(1). 定时快照 -snapshot
redis会每隔一段时间将整个数据库的数据写入到磁盘中,每次都是全部写,代价很高;
(2). 基于语句的追加 - appendOnlyFile,aof
aof只是追加变化的数据,但是追加log可能很大,同时所有操作均要重新执行一遍,恢复速度慢。

2. 耗内存
虽然redis采用压缩算法存储,但是对内存消耗还是很大

2.4 redis的安装、配置?

redis的版本说明
redis版本号中,小数点后的数字为偶数是稳定版本,奇数为非稳定版,建议使用稳定版。在3.0以后有cluster集群功能。
由于redis没有针对于windows的版本,打开redis的windows下载页面,会有一段数据大意就是 Redis官方是不支持windows的,
只是 Microsoft Open Tech group 在 GitHub上开发了一个Win64的版本,项目地址是:

github下载地址
https://github.com/MSOpenTech/redis/releases

配置

2.5 redis中有哪些技术点?

1. 5种数据类型介绍、命令
2. 事物、过期时间、排序
3. 持久化
4. 集群
5. java操作redis基本功能(Main方法)
6. redis相关工具

见后面的连载章节


2.6 redis如何在项目中使用,项目实战?

1. 使用spring+redis集群

见后面的连载章节


2.7 技术进阶,redis如何实现,实现原理,源码分析,技术架构

1. redis技术架构
2. redis实现原理
3. redis性能调优
4. redis源码分析

见后面的连载章节


2.8 参考资料

1. redis官网地址


2. 下载地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章