前言
redis作为nosql的代表型数据库, 应用非常广泛, 特点就是key-value的存储, 可以作为大型的缓存队列, redis源代码托管在github上redis,接下来的我根据redis入门指南
这本书开始学习redis
存储结构
mongoDB
我之前接触最多的nosql数据库就是mongodb
, 它的存储结构是bson, BSON是一种类json的一种二进制形式的存储格式, 所以适合存储json形式的数据, 是一种文档型的数据库, 是比较接近关系型数据库
redis
redis是key-value型的数据库, 目标是作为高效的分布式缓存.数据一般不落地,也不适合作为存储和分析
支持的键值数据类型:
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
内存存储和持久化
redis的数据都是存储在内存中, 内存的读写是远远快于硬盘的, 因此redis可以高效的读写, 但是放在内存中也有风险, 所以redis也对持久化提供了支持, 可以将内存中的数据异步写入到硬盘, 同事继续提供服务
功能丰富
缓存
redis为每个key设置了生存时间, TTL, 生存时间到之后键会被自动删除, 这一功能可以让redis作为缓存系统来使用
redis和memcached
redis是单线程模型, memcached支持多线程.所以在多核服务器上memcached性能更好.但是如果要使用到高级的数据类型或者持久化功能, redis更加出
队列
redis虽然是一个nosql的数据库, 但是在应用上, 很多的公司都将redis作为缓存, 队列来使用.比如一个爬虫系统中, redis作为存储url的队列, 爬虫服务从redis队列中获取url, 然后抓取, 抓取的结果还可以进一步放到redis另一个队列中, redis可以帮助我们提供多个队列
简单稳定
对于传统的关系数据库, 查询一个posts表中一行记录要这样select title from posts where id = 1
而redis是这样HGET post:1 title
简单
redis提供了很多的类似HGET
的命令, 但是常见的就十几个, 用起来非常的简单
代码量小
redis用c开发, 代码量只有3w多行, 而且开源, 所以对于想了解源代码的开发人员来说,可以自行修改源代码来满足自己的需求
支持客户端
redis提供了几十种语言的客户端库, 所以不管你用什么语言开发, redis都可以支持
可靠
redis的开源, 社区活跃, 使用的个人和公司越来越多, redis也开始变得越来越成熟稳定