`
dwj147258
  • 浏览: 196823 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

redis小结

阅读更多

什么是redis?

Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)

 

Reids的特点

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。
Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

 

Redis支持的数据类型

Redis通过Key-Value的单值不同类型来区分, 以下是支持的类型:
Strings
Lists
Sets 求交集、并集
Sorted Set 
hashes
具体的指令说明:http://code.google.com/p/redis/wiki/CommandReference


为什么redis需要把所有数据放到内存中?

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。
如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。

另外讲讲内存中的数据如何同步到磁盘

redis在dump数据的时候,是fork子进程。redis的默认配置中,每60秒如果纪录更改数达到1万条就需要dump到硬盘中去,但实际上由于超过了这个数,我们的redis几乎不停地在dump数据到硬盘上;dump数据到硬盘时,我估计为了达到一个原子的效应,避免数据丢失,redis是先把数据dump到一个临时文件,然后重命名为你在配置文件设定的数据文件名.而前面说到,加载数据要1到2分钟,dump数据应该也在1分钟左右吧;dump出来的文件差不多1到2个G;这样,服务器几乎一直保持着每分钟写一个2G的文件的这种IO的负载,磁盘基本不闲着;

 

Redis是单进程单线程的

redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销

 

虚拟内存

当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.

自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式或者其他数据库

 

分布式

redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。

这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量

读写分离模型

通过增加Slave DB的数量,读的性能可以线性增长。为了避免Master DB的单点故障,集群一般都会采用两台Master DB做双机热备,所以整个集群的读和写的可用性都非常高。
读写分离架构的缺陷在于,不管是Master还是Slave,每个节点都必须保存完整的数据,如果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于Write-intensive类型的应用,读写分离架构并不适合。

 

                                                                 读写分离模型

数据分片模型

为了解决读写分离模型的缺陷,可以将数据分片模型应用进来。

可以将每个节点看成都是独立的master,然后通过业务实现数据分片。

结合上面两种模型,可以将每个master设计成由一个master和多个slave组成的模型。

 

redis的性能

这是官方给出的数据:SET操作每秒钟 110000 次,GET操作每秒钟 81000 次。

实验中模拟了20个客户端对redis进行写操作。当数据库中的数据达到G数据级时,写速度会有明显的下降。

可能的原因: 1、redis需要将数据同步到磁盘,占用了大量的CPU和内存; 2、key数量增大,需要重新布局; 3、消息队列中还存在大量请求,致使请求阻塞。

分享到:
评论

相关推荐

    Redis安装与使用方法小结

    Redis是一款高性能的键值存储系统,常用于缓存和数据持久化。本文将详细介绍Redis的安装与使用方法,包括从下载、安装、启动、测试、持久化策略、开机启动、安全配置、命令行模糊查询以及设置键的过期时间等方面。 ...

    Redis实践与总结

    ### Redis实践与总结 #### 一、Redis简介与应用场景 Redis是一种开源的内存中的数据结构存储系统,可以作为数据库、缓存以及消息中间件使用。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...

    Redis从入门到精通(深入剖析)【55集完整资料】44-redis-redis事务小结.avi

    Redis从入门到精通高清,迅雷播放器组件可顺利播放

    redis集群搭建小结

    Redis 集群搭建是一个关键的IT操作,它涉及到分布式数据存储、高可用性和扩展性。Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列、计数等多个场景。在集群模式下,Redis 可以通过将数据分散在多个节点...

    微服务SpringBoot整合Redis基于Redis的Stream消息队列实现异步秒杀下单

    六、程序测试与小结 文章可能涵盖了编写测试用例以验证Redis Stream消息队列在秒杀场景下的正确性和性能。测试应包括模拟大量并发请求,检查订单创建的正确性,以及验证在高负载下系统的稳定性和伸缩性。 总结,...

    Linux环境安装redis

    小结 通过以上步骤,我们已经成功地安装和配置了 Redis 服务器。在 Linux 环境中安装 Redis 是一个相对简单的过程,只需要下载安装包、拷贝到适当的目录、解压缩、编译安装、配置和启动 Redis 服务器。

    深入理解redis_memcached失效原理(小结)

    Redis 和 Memcached 都是广泛使用的内存数据存储系统,它们常用于缓存和快速数据访问。本文主要讨论了这两种技术的缓存失效原理,特别是针对 Redis 的失效机制进行了深入解析。 首先,我们要明白如何触发 key 的...

    redis常用命令小结

    1、redis-benchmark redis基准信息,redis服务器性能检测 redis-benchmark -h localhost -p 6379 -c 100 -n 100000 100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能 [root@...

    Redis从入门到精通视频.rar

    44-redis-redis事务小结.avi 45-redis-redis消息的发布与订阅.avi 46-redis-redis的主从复制-提供三台redis服务.avi 47-redis-redis的主从复制-启动三台redis服务.avi 48-redis-redis的主从复制-设置主从关系、全量...

    day68Redis高级day68Redis高级

    1.1.3. 小结 RDB方式bgsave的基本流程是: * fork主进程得到一个子进程,共享内存空间 * 子进程读取内存数据并写入新的RDB文件 * 用新RDB文件替换旧的RDB文件 RDB会在什么时候执行?save 60 1000代表什么含义?...

    Redis Sentinel实现哨兵模式搭建小结

    Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个”机器人”可以7*24小时工作,它能能够自动帮助你做一些事情,如监控,提醒,自动处理故障等。 Redis-...

    Redis架构下的MySQL数据库性能提升浅析.pdf

    小结 Redis 架构下的 MySQL 数据库性能提升浅析,Redis 的三种理解和 Redis 中的数据结构选择对于 MySQL 数据库性能提升都起着至关重要的作用。通过合理地选择和使用 Redis,能够提高 MySQL 数据库的性能,满足...

    centos redis 集群安装部署 哨兵模式

    CentOS Redis 集群安装...八、小结 CentOS Redis 集群安装部署哨兵模式需要关闭防火墙、安装 GCC、安装 Redis、配置 Redis、安装哨兵模式、启动 Redis 以及配置从机器。通过这些步骤,可以实现 Redis 集群的高可用性。

    小结plus、Redis的配置,基础包

    知识点: 1. Mybatis框架概述:Mybatis是一个半自动化的ORM框架,即对象关系映射框架,它的主要作用是实现Java对象与数据库表的映射。Mybatis让开发者以面向对象的方式操作数据库,但又不完全屏蔽SQL语句,保留了...

    redis设计与实现原理及运作机制

    **小结** 简单动态字符串(SDS)是Redis中一种重要的基础数据结构,它在保证字符串操作高效的同时,也为Redis提供了灵活的内存管理机制。 ##### 1.2 双端链表 (Doubly Linked List) **双端链表的应用** 双端链表在...

    redis简单介绍及安装使用小结

    Redis是一种高性能的键值对数据存储系统,常被用作数据库、缓存和消息中间件。它与Memcached相似,都是基于内存的数据存储,但Redis提供了更多丰富的数据类型,包括字符串(string)、哈希(hash)、列表(list)、集合...

Global site tag (gtag.js) - Google Analytics