前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis必知必会知识点

Redis必知必会知识点

作者头像
JavaEdge
发布2021-02-22 16:14:28
3340
发布2021-02-22 16:14:28
举报
文章被收录于专栏:JavaEdgeJavaEdge

Redis,全名REmote DIctionary Server,开源的高性能的KV内存数据库,支持数据持久化。 开源的支持多种数据结构的基于键值的存储服务系统,高性能、功能丰富。

提供了Java , C/C++ , C# , PHP , JavaScript ,Perl, Object-C , Python , Ruby , Erlang等客户端

  • 从2010年3月15日起, Redis的开发工作由VMware主持
  • 从2013年5月开始, Redis的开发由Pivotal赞助

1 高性能

  • 底层使用ANSI C语言编写,纯内存数据库,所以读取速度快
  • 通讯采用epolI非阻塞I/O多路复用机制,减少了线程切换时上下文的切换和竞争
  • Redis采用单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争
  • Redis存储结构多样化,不同的数据结构对数据存储进行了优化加快读取的速度
  • Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

Redis能读的速度是11w次/s,写的速度是81000次/s。

官方bench-mark数据:测试完成了50个并发执行100000个请求。设置和获取的值是一个256字节字符串。 结果:读的速度是10000次/s,写的速度是81000次/s。redis尽量少写多读,符合缓存的适用要求。单机redis支撑万级, 如果10万+可采用主从复制的模式。

单线程的原因:

  • 无需各种锁的性能消耗
  • 单线程多进程的集群方案
  • CPU 消耗

单进程单线程优势

  • 代码更清晰,处理逻辑更简单
  • 不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
  • 不存在多进程或者多线程导致的切换而消耗CPU

单进程单线程弊端

  • 无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善

2 线程安全

Redis 操作都是单线程,原子性的。多线程其实体现在数据解析和同步数据。底层内部的核心操作还是单线程的。

3 丰富的功能

3.1 数据结构

string、hash、list、set、sorted set,raw、int、ht、zipmap、linkedlist、ziplist、intset。

3.2 持久化

  • RDB持久化
  • AOF持久化
  • 4.0 引入RDB- AOF混合持久化

3.3 主从模式

3.4 哨兵

集群

模块化

4 适用场景

缓存、分布式锁、队列、集合、GEO、BitMap、消息队列等。

  • 主流互联网微服务架构下的 redis

常见缓存中间件对比

发展史

Redis2.6

1)键的过期时间支持毫秒。 2)从节点支持只读功能。

Redis2.8

1)可以用bind命令绑定多个IP地址。 2)发布订阅添加了pub/sub. 3) Redis Sentinel第二版, 相比于Redis2.6的Redis Sentinel, 此版本已经变成生产可用。

Redis3.0 (里程碑)

  1. Redis最大的改动就是添加Redis的分布式实现Redis Cluster。

Redis3.2

Redis3.2在2016年5月6日正式发布,相比于Redis3.0主要特征如下: 1)添加GE0相并功能。 2)新的List编码类型: quicklist.

Redis4.0 (重大改版)

1)提供了模块系统,方便第三方开发者拓展Redis的功能。 2)提供了新的缓存剔除算法: LFU (Last Frequently Used),并对已有算法进行了优化。 3)提供了非阻塞del和flushall/flushdb功能,有效解决删除了bigkey可能造成的Redis阻塞。 4)提供了RDB-AOF混合持久化格式,充分利用了’AOF和RDB各自优势。

Redis5.0

1)新的Stream数据类型。 2)客户经常连接和断开连接时性能更好。

Redis6.0

  1. 多线程。多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 高性能
  • 2 线程安全
  • 3 丰富的功能
    • 3.1 数据结构
      • 3.2 持久化
        • 3.3 主从模式
          • 3.4 哨兵
            • 集群
              • 模块化
              • 4 适用场景
              • 常见缓存中间件对比
              • 发展史
                • Redis2.6
                  • Redis2.8
                    • Redis3.0 (里程碑)
                      • Redis3.2
                        • Redis4.0 (重大改版)
                          • Redis5.0
                            • Redis6.0
                            相关产品与服务
                            云数据库 Redis
                            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档