redis的那些事

持久化 

redis支持RDB和AOF两种持久化方式

 

The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.

RDB是一种即时快照的存储方式,定时对数据库进行snapshot

RDB优点:

1 RDB对于数据备份非常容易。你可以设置1天或者30天对数据进行一次备份,这样当发生数据灾难的时候能很容易恢复

2 由于RDB对数据备份时redis只做备份操作,所以备份最大化的使用了redis的性能,同时也导致了对于大的数据集,RDB备份快于AOF

 

RDB缺点:

1 如果你的需求只是要知道两个时间段中redis的变化,RDB是弱于AOF的

2 由于RDB经常使用子进程fork()进行数据备份,所以如果当数据比较大的时候,数据备份会比较耗时

 

AOF优点:

1 你必须有一个AOF的fsync的策略:

或者是不进行fsync, 或者每秒fsync一次,或者每次query查询的时候fsync

2 AOF只记录修改log,当存储的时候由于某种原因写log失误了,使用redis-check-aof能很好的修复

3 当redis数据太大的时候,AOF可以很好被重写到新的redis上

 

AOF缺点:

1 AOF通常比RDB大

2 AOF比RDB慢

 

 --------------------------

流水线

 

redis是客户端和服务器端的通信交互TCP协议

 

当客户端发送请求,服务器端接受请求并发送回复,客户端接收回复,这个过程叫做RTT(Round Trip Time)

比如如果RTT时间是250微秒,既是服务器端每秒能处理10万个请求,那么,我们只能认为redis每秒处理4个请求

 

server不需要等待client接收了消息之后再处理新request的技术叫做pipelining(流水线)。这个技术早在几十年前就应用在了各种协议上(比如pop3),redis也很早使用了这个技术。

 

实验:

$ (echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379

当调用这个例子的时候:

server一次返回:

+PONG

+PONG

+PONG

 

而不是返回一次PONG,过了RTT时间再返回PONG,这个例子就说明了redis使用pipelining

 

注:nc命令说明请看:

http://www.cnblogs.com/faraway/archive/2008/08/30/1280070.html 

 

---------------------------------

订阅 

 

 redis支持订阅(subscribe)

当一个client订阅一个或多个变量,其他客户端修改了变量并publish之后,这个客户端会收到消息

 

例子:

Client1:

SUBSCRIBE first second

 

Client2:

PUBLISH second Hello

 

client1显示:

message

second

Hello2

 

 

redis还支持模式订阅(psubscribe命令)

PSUBSCRIBE f*

 

---------------------------------

参考文档:

http://redis.io/documentation

---------------------------------

作者:yjf512(轩脉刃)

出处:http://www.cnblogs.com/yjf512/

本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明 

时间: 2024-08-15 07:37:20

redis的那些事的相关文章

Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis

Redis真是好,其中的键值用起来真心强大啊有木有, 之前的文章讲过搭建了redis集群 那么咋们该如何调用单机版的redis以及集群版的redis来使用缓存服务呢? 先讲讲单机版的,单机版redis安装非常简单,不多说了,直接使用命令:  1 [root@nginx bin]# ./redis-server redis.conf  启动就行 在sprig文件中配置如下 1 <!-- 2 TODO: 3 开发环境使用单机版 4 生产环境务必切换成集群 5 --> 6 <!-- 配置red

redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据

在使用redis时,有时回存在大量数据的时候,而且分类相同,ID相同 可以使用hset来设置,这样有一个大类和一个小分类和一个value组成 但是hset不能设置过期时间 过期时间只能在set上设置 1 // 向redis中添加缓存 2 jedisClient.set(REDIS_ITEM_KEY + ":" + itemId + ":" + ITEM_KEY, JsonUtils.objectToJson(item)); 3 // 设置key的过期时间 4 jed

Redis持久化

Redis持久化 今天在被电话面试的时候问到Redis持久化的问题了,说实话还是自己对Redis并不是太熟悉,导致这块回答的并不是太好,因此打算用这篇文章帮助自己整理一下.文章参考了互联网上的诸多文章,文章末尾给出了原文地址,在此感谢原作者. 持久化 持久化,简单来讲就是将数据放到断电后数据不会丢失的设备中.也就是我们通常理解的硬盘上. 写操作的流程 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程. 客户端向服务端发送写操作(数据在客户端的内存中) 数据库服务端接收到写请

深度剖析Redis持久化

Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速.  近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述.文章主要包含三个方面:Redis持久化是如何工作的.这一性能是否可靠以及和其它类型的数据库比较.以下为文章内容:  一.Redis持久化是如何工作的?  什么

ehcache memcache redis 三大缓存对比

最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!  Ehcache 在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0  license).充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中. 什么特色? 1.  够快 Ehcache的发行有一段

15天玩转redis —— 第七篇 同事的一次缓存操作引起对慢查询的认识

上个星期同事做一个业务模块,需要将一个80M的数据存入到redis缓存中,想法总是好的,真操作的时候遇到了HSet超时,我们使用的是C#的 StackExchange.Redis驱动. <redisCacheClient allowAdmin="true" ssl="false" connectTimeout="5000" abortConnect="false" database="0"> &

一步一个脚印:解密唯品会中Redis集群架构演进与功能定制

在2016杭州云栖大会的"开源数据库之Redis专场"上,来自唯品会的高级数据工程师申政带来了题为<Redis在唯品会的应用实践>的精彩分享.分享中,他主要介绍Redis集群架构演进.Redis使用经验以及唯品会对Redis二次开发实践积累三部分,干货满满,精彩不容错过. 以下内容根据演讲PPT及现场分享整理. Redis集群架构演进 目前在唯品会内对Redis的使用属于重量级别,目前在唯品会内大概有8000个Redis实例.1000台物理机.500个应用. 上图是唯品会对

《Redis官方文档》Redis调试指南

原文链接      译者:Adeline Redis开发过程中十分注重其稳定性:我们尽一切努力来保证每一个版本的稳定,不出现突然崩溃等情况.但是即使在我们百分百的努力下,仍然没办法保证百分百的无bug. Redis出现崩溃时,会生成一个详细的报告来描述当时的情景,但是有时候只看报告还不够,而且Redis的核心开发团队可能也没办法独立重现你出现崩溃时候的场景:在这种情况下,我们需要用户能够重现这个情景来帮助我们. 这个指南讲解了如何使用GDB来获得Redis开发者可能用到的信息. GDB是什么?

跟我一起数据挖掘(21)——redis

什么是Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.从2013年5月开始,Redis的开发由Pivotal赞助. Memcached和Redis Memcached的基本应用模型如下图所示: redis使用与其相同,将memcached改为redis即可. Redis支持的数据类型 字符串(Strings) 字符串是Redis值