最近在项目有用到redis,所以在看redis的源码,接下来打算把redis的整体情况都介绍下,会逐渐写redis源码的相关功能,不过,做什么东西之前,都应该考虑它的优点和缺点,所以,先写redis的优点和缺点。

redis是一个key-value存储系统,数据存储在内存中,它的优点主要如下:

1. 支持多种数据类型

包括set,zset,list,hash,string这五种数据类型,操作非常方便。比如,如果你在做好友系统,查看自己的好友关系,如果采用其他的key-value系统,则必须把对应的好友拼接成字符串,然后在提取好友时,再把value进行解析,而redis则相对简单,直接支持list的存储(采用双向链表或者压缩链表的存储方式)。

2. 持久化存储

作为一个内存数据库,最担心的,就是万一机器死机,数据会消失掉。redi使用rdb和aof做数据的持久化存储。主从数据同时,生成rdb文件,并利用缓冲区添加新的数据更新操作做对应的同步。

3. 丰富的特性

pub/sub,key过期策略,事务,支持多个DB等。

4. 性能很好

由于是全内存操作,所以读写性能很好,可以达到10w/s的频率。公司有项目使用redis,目前的访问频率是80w/s,通过适当的部署,线上运行一切ok。

redis的缺点主要如下:

1. 由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。

2. 如果进行完整重同步,由于需要生成rdb文件,并进行传输,会占用主机的CPU,并会消耗现网的带宽。不过redis2.8版本,已经有部分重同步的功能,但是还是有可能有完整重同步的。比如,新上线的备机。

3. 修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。在这个过程中,redis不能

提供服务。

原文:http://joezhengjinhong.blog.51cto.com/7791846/1565754

转载于:https://www.cnblogs.com/zjuwangleicn/p/7551703.html

关于redis的几点思考相关推荐

  1. 基于 Redis 实现分布式锁思考

    以下文章来源方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/xuan_lu/article/details/111600302 分布式锁 基于redis实 ...

  2. 基于redis实现分布式锁思考

    分布式锁 基于redis实现分布式锁思考几个问题??? synchronized锁为什么不能应用于分布式锁? synchronized虽然能够解决同步问题,但是每次只有一个线程访问,并且synchro ...

  3. Redis缓存失效策略思考

    1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...

  4. python使用redis_python应用中使用redis的几个思考

    使用pipeline来提高性能 应该使用pipeline来将多个请求组合在一起,一次性在发送给服务器,并返回结果. import redis from redis.client import Pipe ...

  5. Redis 乱码解决与思考

    Question 前段时间,工作的时候.测试数据,有位同事测试老是失败.经过调查定位,发现是Redis内存储的数据格式不对.比较奇怪的是,远程SSH登陆到同一台机器操作,由于客户机的编码不一致,启动的 ...

  6. Redis 4.x/5.x未授权访问漏洞

    Redis是什么? Redis是数据库,一个高性能的key-value存储系统,是使用ANSI C语言编写的. Redis未授权访问漏洞 Redis 默认情况下,会绑定在 0.0.0.0:6379,如 ...

  7. redis+lua实现分布式限流

    前言 之前我们谈到的限流解决方案中提到了在分布式环境下,可以使用redis结合lua进行限流,与网关层限流不同的是,基于Redis+Lua的分布式限流属于服务端限流 使用redis做限流原因 在前面的 ...

  8. 理想化的 Redis 集群

    摘要: 豁达是正确乐观的面对失败的系统.不需要过多的担心,需要一种去说那又怎样的能力.因此架构的设计是如此的重要.许多优秀的系统没有进一步成长的能力,我们应该做的是使用其他的系统去共同分担工作. Re ...

  9. redis依赖包_092-Redis集群、JedisCluster

    1. Redis集群-创建Redis集群 (1) 如何搭建Redis集群? 需求: 搭建一个 Redis 的最小集群,使用伪集群方式. Redis 中最小的集群三对主从. 在 192.168.224. ...

最新文章

  1. 中科院微生物所郭惠珊团队创建抗土传真菌黄萎病的陆地棉种质
  2. 修改mysql表的itemId字段为自增长SQL语句
  3. 爬虫必备反爬技能:使用动态ip
  4. TypeScript泛型约束
  5. 双网卡绑定--实现负载冗余
  6. R 语言的学习 —— 环境准备与安装
  7. c语言编写自由落体运动程序,3个C语言程序急求大神编写,再次先谢过了、
  8. http://95u.free.fr/index.php,Electronic Software Distribution Service
  9. 罗马数字转换python_Python实现将罗马数字转换成普通阿拉伯数字的方法
  10. 学习记录-FDD大规模MIMO系统的稀疏信道估计技术研究
  11. 物联网单位换算:光的强度与辐射转换
  12. 无需 Cookie,把 Python 微博爬虫改写成 Chrome 插件
  13. 动词记忆(1):ate,ify,ish后缀常用词
  14. vue设置浏览器顶部小图标
  15. 《犹太人想的和你不一样》
  16. 计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误
  17. 在arcengine中实现图片预览
  18. 华硕FL8000U拆换机械硬盘
  19. 怎么都2200年了,还有人不愿意交社保???
  20. 营养素的基础知识1(非技术文)

热门文章

  1. MooTool 1.0.0 发布,开发者常备桌面小工具
  2. python需要的开发特点_Python编程语言特征
  3. 战队不显示名字了_年仅17岁的新人选手!峡谷之巅1200分!被16家战队哄抢
  4. 步步惊芯 软核处理器的内部设计分析 pdf_【深度分析】互联网巨头造“芯”现状...
  5. python代码_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)
  6. log4j 按天打印到文件夹_log4j日志打印到前一天的日志文件中
  7. php处理文件属性函数,文件属性 · PHP文件系统操作常用函数整理 · 看云
  8. python有几大模块_Python的几个常用模块
  9. springboot怎么杀进程_头疼,springboot进程总是自己退出
  10. nginx中文url php,使Nginx服务器支持中文URL的相关配置详解