redis知识盘点【壹】_基础知识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xinzun/article/details/78457015

在csdn写的第一篇技术分享文章,写的不好请多担待。希望我的文章尽量少废话,干货多一些,让诸位不浪费时间阅读并能获取些许收获。


本文一部分内容整理自黄健宏老师的《Redis设计与实现》和付磊、张益军两位老师合著的《Redis开发与运维》两本书。下面是京东购书链接:




redis是时下非常流行的一款开源key/value数据库,广泛应用于互联网项目。其优点如下:

1.性能极高,官方数据Redis能读的速度是110000次/s,写的速度是81000次/s;

2.采用单线程模型,Redis所有操作都是原子性的,同时支持对几个操作全并后的原子性执行;

3.redis不需要依赖操作系统中的类库(memcached需要依赖libevent这样的系统类库)。


和ehcache比较的话,redis是用C实现的,而ehcache是用java。此外redis是独立于应用部署的,而ehcache是和应用共用一个JVM。ehcache比较适合用作单机系统的缓存。


和memcache比较的话,二者都是用C实现的。memcache的缓存数据只支持字符串格式,而redis支持多种数据结构。memcache支持多线程读写,而redis是单线程。memcache不支持持久化,而redis支持。memcache做集群时数据没有复制和同步机制,而redis支持配置集群主从复制。memcache并不真正支持分布式,其数据分片的实现需要开发者借助一致性哈希算法自行实现,而redis官方已经实现了分布式缓存。


redis目前已发布4.0版。小数点前数字为主版本号,小数点后一位数字为副版本号。奇数的副版本号用来表示非标准版本,而偶数的为正式版本。我们在生产环境上一定要使用偶数版本的redis。


基本redis每个稳定版本都会发布一个运行稳定的新功能。比如redis 2.8版本推出了sentinel(哨兵)和发布订阅等功能;3.0版本推出了redis cluster(redis集群,解决分布式缓存问题)功能;3.2版本推出了GEO(地理信息定位)功能...redis在2.8版本代码大约2W行,而3.0版本时已突破5W行了。


redis的主要应用场景如下
1.缓存,并提供键值过期时间;
2.排行榜系统,可使用列表或有序集合实现;
3.计数器系统,天然支持计数功能;
4.社交网络,赞/踩,粉丝,共同好友/喜好,推送,下拉刷新;
5.消息队列系统,提供了发布订阅和阻塞队列功能

redis主要支持五种数据结构,分别为字符串(String)、哈希(Map)、列表(list)、集合(sets) 和 有序集合(sorted sets)。在2.8版本中新增了HyperLogLog结构,可用于做基数统计,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。


redis同时支持对缓存数据的持久化,有RDB和AOF两种方式。


在日常开发中,虽然redis的读写速度比关系型数据库快很多,但是不建议把所有数据都缓存在redis内,因为这样会影响其他热点数据的读取效率。建议先在业务上进行梳理,把真正的热点数据缓存在redis。


给开发者的建议:永远不要把redis当作黑盒使用,不单纯停留在开发上,适当理解下redis的原理和实现是很有必要的。至少了解在成千上万的key中执行keys *命令是很愚蠢的行为。


后面系列的文章会将上面提到的知识进行展开讨论,下篇文章介绍一下redis主要五种数据结构的实现先。


redis知识盘点【贰】_五种类型

展开阅读全文

没有更多推荐了,返回首页